linux - 在 Linux 上,如何确保解锁锁定在死亡/终止线程中的互斥量?

标签 linux multithreading locking mutex

这是一道面试题。

在 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/

相关文章:

python - 第一个文件路径值未添加到 linux ubuntu 上的数组中

java - Swing Worker 线程意外停止执行代码

java - 在使用 Ehcache 刷新只读缓存之前,我需要锁定它吗?

mysql - 在事务中锁定表

MySQL 锁兼容性

regex - 种子 | awk 在匹配下一行后删除行

c - 无法在 kgdb 设置中的某些函数上设置断点

html - 将 html 实体解码为中文字符

python-3.x - PyQt5 + Python 3 : passing lists, dicts 作为跨线程的信号参数

C#、线程优先级和锁