【发布时间】:2016-04-16 11:49:14
【问题描述】:
与this question 相关——我正在调试一些可以两次解锁互斥锁的代码,我正试图弄清楚它何时发生。我正在从 Helgrind 获取堆栈跟踪,但我希望程序在执行错误解锁时立即崩溃。
我知道解锁已经解锁的互斥锁的行为是未定义的,因此鼻恶魔是可以接受的实现 --- 我当然不能强迫鼻恶魔崩溃。但是考虑到 glibc 最新版本中的 pthreads 实现,有没有办法合理可靠地获得这种行为?
【问题讨论】:
-
将互斥锁类型设置为
PTHREAD_MUTEX_ERRORCHECK如果互斥锁已经解锁,将导致解锁失败。显然,这不会自动导致崩溃,而是依赖于您的调用代码检测解锁失败。因此,它可能会或可能不会帮助您,但如果有帮助,请指出。
标签: c multithreading concurrency pthreads