这是一道面试题。
在 Linux 上,如何确保解锁锁定在死掉/终止的 POSIX 线程中的 POSIX 互斥量?
我的想法:
当Linux向程序发送kill或终止信号时,它会自动释放吗?但是,我找不到有关操作系统如何执行此操作的更多详细信息?
谢谢
最佳答案
robust mutex 可用于处理互斥锁的所有者在持有互斥锁时被终止的情况,这样就不会发生死锁。这些比常规互斥锁有更多的开销,并且要求所有锁定互斥锁的客户端准备好处理错误代码 EOWNERDEAD
。这表明前所有者已经死亡,收到此错误代码的客户端是新所有者,并负责清理任何不一致的状态。
健壮的互斥锁是具有健壮属性集的互斥锁。它是使用 POSIX.1-2008 标准函数设置的 pthread_mutexattr_setrobust(&attr, PTHREAD_MUTEX_ROBUST)
.
可以在 the Linux manual page for pthread_mutexattr_getrobust
上找到更多详细信息和示例代码.
关于linux - 在 Linux 上,如何确保解锁锁定在死亡/终止线程中的互斥量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9198799/