首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >POSIX线程退出/崩溃/异常-持有互斥对象时崩溃

POSIX线程退出/崩溃/异常-持有互斥对象时崩溃
EN

Stack Overflow用户
提问于 2011-09-08 13:02:32
回答 2查看 4.5K关注 0票数 6

是否存在明确定义的POSIX互斥对象所有权行为?

  1. 线程退出
  2. 线程崩溃
  3. 线程崩溃原因是

异常

假设线程-1拥有一个互斥体。线程-2正在等待获取相同的互斥对象。线程-1是1/2/3的场景。对线程2有什么影响?

PS :我认为自旋锁的行为是,而不是解锁线程-2,理由是由自旋锁保护的部分无论如何都处于不良状态。

EN

回答 2

Stack Overflow用户

发布于 2011-09-08 14:35:02

如果您担心这些问题,健壮的Mutexes可能是您要寻找的工具:

http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_mutexattr_setrobust.html

在拥有健壮互斥锁的线程终止后,试图锁定它的下一个线程将获得EOWNERDEAD并成为新的所有者。这表明它负责清理互斥锁保护的状态,并在解锁之前将其标记为与pthread_mutex_consistent函数一致。在不标记一致的情况下解锁使互斥锁处于永久不可恢复的状态。

注意,使用健壮的互斥锁,所有锁定互斥锁的代码都必须知道返回EOWNERDEAD的可能性。

票数 8
EN

Stack Overflow用户

发布于 2011-09-08 14:14:03

真的很简单。如果没有显式地解锁互斥锁,则不管发生了什么或原因,互斥锁仍然是锁定的。这是c,而不是rails上的ruby或visual。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7348465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档