This question already has answers here:
Check to see if a pthread mutex is locked or unlocked (After a thread has locked itself)
(3个答案)
1年前关闭。
我想找出pthread锁定变量是否被锁定。
一种简单的方法是使用如下所示的trylock
我如何在没有锁的情况下做同样的事情?
(3个答案)
1年前关闭。
我想找出pthread锁定变量是否被锁定。
一种简单的方法是使用如下所示的trylock
pthread_mutex_t lockVar;
if(pthread_mutex_trylock(&lockVar) == 0)
{
//lock was successful
pthread_mutex_unlock(&lockVar);
}
else
{
//someone else holds the lock
}
我如何在没有锁的情况下做同样的事情?
最佳答案
当您同时执行多个执行时,就没有“同时性”的概念。除非发生明确的同步,否则无法及时为事件指定全局顺序。语言中没有可观察到的属性,通常可以观察到任何类型的顺序。
具体地说,“那边的互斥锁是否被锁定”这个问题是没有意义的。它没有您可以采取行动的答案。不管虚拟答案是什么,互斥锁的状态都可以立即更改。答案是“是的,它已被锁定”(它可能同时被解锁),或者“否,它是未锁定”(可能在到达那里之前被锁定)。
互斥锁唯一可以做的就是尝试将其锁定。您要么失败,从而知道它已被锁定,要么您成功了,因此知道它没有被锁定,现在您有了锁。
关于检查pthread锁定变量是否被锁定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25694110/