是否存在明确定义的POSIX互斥对象所有权行为?
异常
假设线程-1拥有一个互斥体。线程-2正在等待获取相同的互斥对象。线程-1是1/2/3的场景。对线程2有什么影响?
PS :我认为自旋锁的行为是,而不是解锁线程-2,理由是由自旋锁保护的部分无论如何都处于不良状态。
发布于 2011-09-08 14:35:02
如果您担心这些问题,健壮的Mutexes可能是您要寻找的工具:
http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_mutexattr_setrobust.html
在拥有健壮互斥锁的线程终止后,试图锁定它的下一个线程将获得EOWNERDEAD并成为新的所有者。这表明它负责清理互斥锁保护的状态,并在解锁之前将其标记为与pthread_mutex_consistent函数一致。在不标记一致的情况下解锁使互斥锁处于永久不可恢复的状态。
注意,使用健壮的互斥锁,所有锁定互斥锁的代码都必须知道返回EOWNERDEAD的可能性。
发布于 2011-09-08 14:14:03
真的很简单。如果没有显式地解锁互斥锁,则不管发生了什么或原因,互斥锁仍然是锁定的。这是c,而不是rails上的ruby或visual。
https://stackoverflow.com/questions/7348465
复制相似问题