Solaris 动态跟踪指南

互斥探测器

互斥强制临界段相互排斥。当线程尝试使用 mutex_lock(3C)pthread_mutex_lock(3C) 获取另一个线程暂挂的互斥时,它将确定拥有线程是否正在其他 CPU 中运行。如果是这样,获取线程将旋转一段时间,以等待互斥可用。如果属主未在另一个 CPU 上运行,获取线程将阻塞

表 31–1 中列出了与互斥有关的四个 plockstat 探测器。对于每一个探测器,arg0 包含指向代表互斥的 mutex_tpthread_mutex_t 结构(这些结构的类型相同)的指针。

表 31–1 互斥探测器

mutex-acquire

获取互斥之后将立即触发的暂挂事件探测器。arg1 包含布尔值,用于指示获取操作对于递归互斥是否是递归的。arg2 表示获取线程在此互斥上旋转的重复次数。仅当在获取此互斥时触发 mutex-spin 探测器,arg2 才将为非零值。

mutex-block

线程在暂挂互斥上阻塞之前将触发的争用事件探测器。单次锁定获取可能会同时触发 mutex-blockmutex-spin

mutex-spin

线程开始在暂挂互斥上旋转之前将触发的争用事件探测器。单次锁定获取可能会同时触发 mutex-blockmutex-spin

mutex-release

释放互斥之后将立即触发的暂挂事件探测器。arg1 包含布尔值,用于指示事件是否对应于递归互斥上的递归释放。

mutex-error

互斥操作中遇到错误时将触发的错误事件探测器。arg1 是遇到的错误的 errno 值。