【发布时间】:2012-03-01 07:41:16
【问题描述】:
我想在我的代码中将一些调试代码添加到pthread_cond_wait 的抽象中,以检查调用代码是否真的持有互斥锁,因为它应该。这是为了检查其余调用者的正确性。
有没有办法检查互斥锁是否被锁定,或者在 pthreads 实现中启用调试模式(在 Linux 上)告诉我是否没有?
【问题讨论】:
-
如果此时您拥有互斥锁还不是很明显,那么您的代码需要认真修复...
-
@R.. 对于简单的情况,没问题。随着代码的增长和变得更加复杂,并且随着时间的推移由不同的人处理,变得不那么明显了。验证优于依赖“明显”的正确性。
-
如果持有锁的范围定义太差以至于当你到达
pthread_cond_wait时你不确定它是否被持有,那么代码几乎肯定充满了死锁。在好的代码中,在您可能调用同步原语的任何特定点,您持有的相关锁集应该是静态约束(相对于反映您正在处理的对象的可变参数)。