当我双重解锁pthread_mutex_t时,我可以强制崩溃吗?

时间:2016-01-12 01:00:30

标签: c multithreading concurrency pthreads

this question相关 - 我正在调试一些解锁互斥锁的代码两次,并且我试图弄清楚它何时发生。我从Helgrind那里获得了堆栈跟踪,但我希望程序在执行错误解锁时立即崩溃。

我知道解锁已经解锁的互斥锁的行为是未定义的,所以鼻子恶魔是可接受的实现 - 我当然不能强迫鼻子恶魔崩溃。但是考虑到最近版本的glibc中的pthreads实现,有没有办法合理可靠地获得这种行为?

1 个答案:

答案 0 :(得分:2)

您可以检查pthread_mutex_unlock的返回值,并使用错误检查互斥锁(PTHREAD_MUTEX_ERRORCHECK互斥锁类型),而不是获取崩溃。如果您发现错误,请拨打abort()或其他任何内容。