加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 01:35:45 所属栏目:Linux 来源:网络整理
导读:这是一个面试问题. 在linux上,如何确保解锁被锁定在死机/终止的POSIX线程中的POSIX互斥锁? 我的想法: Linux会在向程序发送终止或终止信号时自动释放它吗?但是,我找不到有关操作系统如何执行此操作的更多详细信息? 谢谢 解决方法 可以使用强大的互斥锁来
这是一个面试问题.

在linux上,如何确保解锁被锁定在死机/终止的POSIX线程中的POSIX互斥锁?

我的想法:

Linux会在向程序发送终止或终止信号时自动释放它吗?但是,我找不到有关操作系统如何执行此操作的更多详细信息?

谢谢

解决方法

可以使用强大的互斥锁来处理互斥锁的所有者在保持互斥锁时被终止的情况,从而不会发生死锁.它们比常规互斥锁具有更多开销,并且要求锁定互斥锁的所有客户端都准备好处理错误代码EOWNERDEAD.这表明前所有者已经死亡,并且接收此错误代码的客户端是新的所有者,并负责清除任何不一致的状态.

强健的互斥锁是具有健壮属性集的互斥锁.在Linux上,可以使用pthread_mutexattr_setrobust_np(& attr,PTHREAD_MUTEX_ROBUST_NP)或使用POSIX标准函数pthread_mutexattr_setrobust(&attr,PTHREAD_MUTEX_ROBUST)设置(如果您有glibc 2.12或更高版本)(此功能在POSIX.1-2008中标准化).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读