1

我正在查看一些为 pthread 互斥体提供 C/C++ 包装器的代码。该代码为有信号/无信号条件保留一个影子变量。pthread_mutex_lock该代码还忽略了和等函数的返回值pthread_mutex_trylock,因此影子变量可能无法准确反映互斥锁的状态(忽略次要竞争条件)。

pthread 是否提供了一种查询互斥锁状态的方法?快速阅读pthread API似乎没有提供。我也没有看到任何有趣的操作pthread_mutexattr_t

还是应该使用trylock、依赖EBUSY并在获得时放弃所有权?

提前致谢。

4

1 回答 1

1

没有这样的功能,因为没有意义。如果您查询互斥锁的状态而不尝试获取它,pthread_mutex_trylock()那么您获得的结果可能会立即因另一个线程更改该互斥锁的状态而无效。

于 2013-07-23T13:48:00.233 回答