我正在查看一些为pthread互斥锁提供C / C ++包装器的代码。代码为发出信号/未发信号的条件保留阴影变量。代码还忽略了pthread_mutex_lock
和pthread_mutex_trylock
等函数的返回值,因此shadow变量可能无法准确反映互斥锁的状态(忽略次要竞争条件)。
pthread是否提供了一种查询互斥锁状态的方法?快速阅读pthread API似乎没有提供。我也没有看到任何有趣的内容在pthread_mutexattr_t
上运行。
或者应该使用trylock
,依靠EBUSY
,并在获得后放弃所有权?
提前致谢。
答案 0 :(得分:1)
没有这样的功能,因为没有意义。如果您查询互斥锁的状态而不尝试获取它,就像pthread_mutex_trylock()
那样,那么您获得的结果可能会被另一个更改该互斥锁状态的线程立即失效。