与this question相关 - 我正在调试一些解锁互斥锁的代码两次,并且我试图弄清楚它何时发生。我从Helgrind那里获得了堆栈跟踪,但我希望程序在执行错误解锁时立即崩溃。
我知道解锁已经解锁的互斥锁的行为是未定义的,所以鼻子恶魔是可接受的实现 - 我当然不能强迫鼻子恶魔崩溃。但是考虑到最近版本的glibc中的pthreads实现,有没有办法合理可靠地获得这种行为?
答案 0 :(得分:2)
您可以检查pthread_mutex_unlock
的返回值,并使用错误检查互斥锁(PTHREAD_MUTEX_ERRORCHECK
互斥锁类型),而不是获取崩溃。如果您发现错误,请拨打abort()
或其他任何内容。