与this question相关--- 我正在调试一些两次解锁互斥锁的代码,我试图弄清楚它发生的确切时间。我从 Helgrind 获取堆栈跟踪,但我希望程序在执行错误解锁时立即崩溃。
我知道解锁一个已经解锁的互斥锁的行为是未定义的,所以鼻恶魔是一个可以接受的实现——我当然不能强制鼻恶魔崩溃。但是考虑到 glibc 最新版本中的 pthreads 实现,有没有办法合理可靠地获得这种行为?
最佳答案
您可以做的不是获得崩溃,而是检查 pthread_mutex_unlock
的返回值,并使用错误检查互斥体(PTHREAD_MUTEX_ERRORCHECK
互斥体类型)。如果您检测到错误,请调用 abort()
或其他任何方法。
关于我可以在双重解锁 pthread_mutex_t 时强制崩溃吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34733911/