gpt4 book ai didi

c++ - 如何检查线程是否持有互斥锁C++

转载 作者:行者123 更新时间:2023-11-30 01:26:22 26 4
gpt4 key购买 nike

在我的应用程序 (C++/Linux) 中,有时线程在被取消时会获取互斥锁(递归)。这会导致死锁,因为其他线程也使用相同的互斥锁但无法获取它。

现在可以检查该线程是否正在锁定任何互斥锁。我的动机是手动清除线程正在锁定然后取消线程。

我能想到的一种可能的方法是维护一个计数器。也欢迎任何更好的方法..

提前致谢

最佳答案

许多库提供类似于 Windows 的 TryEnterCriticalSection 的机制.如果这返回一个信号,表明互斥量已被占用,那么您就有了答案。

但是你有一个比这更大的问题。在一个设计得当的多代码应用程序中,您永远不会遇到死锁或竞争条件,而且您当然不必手动插入另一个线程来操纵它的状态。

与其编写一些 hack,不如修复你的 bug。

关于c++ - 如何检查线程是否持有互斥锁C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10558257/

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