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

标签 c multithreading concurrency pthreads

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

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

最佳答案

您可以做的不是获得崩溃,而是检查 pthread_mutex_unlock 的返回值,并使用错误检查互斥体(PTHREAD_MUTEX_ERRORCHECK 互斥体类型)。如果您检测到错误,请调用 abort() 或其他任何方法。

关于我可以在双重解锁 pthread_mutex_t 时强制崩溃吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34733911/

相关文章:

c - 在 C 中将字符数组转换为 int 安全吗?

java - 流程卡在流程构建器上

java - 您可以只使用 AtomicInteger 来创建 ReadWriteLock 锁吗?

swift - 从其共享实例访问全局参与者属性

java - 使用 AtomicIntegerArray 在 Java 中实现 AtomicByteArray

c - fread() 的意外返回值

c - 除以大数后得到小数值

java - 当我的所有线程在 android 中完成时,我如何执行函数?

java - 调用start()之后,为什么线程的构造函数返回到main(),而没有将控制权转发给run()方法?

c - 将动态库链接到静态库(又名预链接动态库)