断言调用方持有互斥

时间:2018-02-10 21:56:46

标签: c pthreads posix mutex assert

我今天被问到为什么没有函数pthread_mutex_assert_locked可以使用(至少与错误检查互斥锁)来断言调用者持有特定的互斥锁。随后的讨论提出了将断言实现为:

的可能性
assert(pthread_mutex_lock(m)==EDEADLK);

用于错误检查互斥锁。如果互斥锁在到达时被解锁,或者如果另一个线程将其锁定并解锁,则可以可靠地触发断言失败,但是在实际的死锁情况下,持有互斥锁的(其他)线程将不会向前推进直到该线程使断言成功,它将陷入僵局。

这是我们用现有的pthread互斥API做的最好的吗?有没有更好的方法断言互斥锁所有权,可靠地触发不会发生死锁?

0 个答案:

没有答案