读取器/写入器锁定允许临界段中一次有多个读取器或一个写入器,但不允许二者同时存在。这些锁定通常用于搜索操作比修改操作更频繁或线程在临界段中花费大量时间的结构。用户使用 Solaris rwlock(3C) 或 POSIX pthread_rwlock_init(3C) 接口与读取器/写入器锁定交互。
表 31–2 中介绍了与读取器/写入器锁定有关的探测器。对于每一个探测器,arg0 包含指向代表自适应锁定的 rwlock_t 或 pthread_rwlock_t 结构(这些结构的类型相同)的指针。arg1 包含布尔值,用于指示操作是否作为写入器。
表 31–2 读取器/写入器锁定探测器
rw-acquire |
获取读取器/写入器锁定之后将立即触发的暂挂事件探测器。 |
rw-block |
尝试获取锁定时,在线程阻塞之前将触发的争用事件探测器。如果启用该探测器,rw-acquire 探测器或 rw-error 探测器将在 rw-block 之后触发。 |
rw-release |
释放读取器/写入器锁定之后将立即触发的暂挂事件探测器。 |
rw-error |
读取器/写入器锁定操作期间遇到错误时将触发的错误事件探测器。arg1 是遇到的错误的 errno 值。 |