gpt4 book ai didi

multithreading - 线程因锁定的互斥锁而崩溃

转载 作者:行者123 更新时间:2023-12-04 18:53:05 25 4
gpt4 key购买 nike

有一种情况,我有两个线程都使用相同的互斥锁。一个线程锁定了互斥锁并崩溃了。互斥状态是什么?它是否仍然被锁定并且第二个线程从未拥有该互斥锁?意味着死锁情况?

编辑 - 还解释了 Linux 系统上 pthread 的一个案例

最佳答案

既然你没有指定什么操作系统,我就告诉你在Win32中会发生什么。

在 Win32 中,第二个线程在等待已终止线程拥有的互斥锁时将获得 WAIT_ABANDONED。 注意接收到 WAIT_ABANDONED 表示第二个线程已经接收到互斥锁,所以不会出现死锁。 第二个线程应该检测 WAIT_ABANDONED 结果并验证互斥锁保护的资源是否处于有效状态。如果它可以检测到损坏并且没有检测到任何损坏,则可以安全地继续。如果没有,提出某种错误是个好主意。

对于互斥锁的某些实现,无法检测到拥有它的线程已终止,最终会陷入死锁。

对于互斥锁的某些实现,有一种方法可以检测拥有线程是什么,确定拥有线程已终止,然后获取互斥锁的所有权。

关于multithreading - 线程因锁定的互斥锁而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3163883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com