我想知道是否锁定了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
}
Run Code Online (Sandbox Code Playgroud)
如何在不获得锁定的情况下做同样的事情?
当你同时发生多次执行时,没有"同时性"的概念.除了显式同步发生时,事件不能及时给出全局顺序.从语言中可以观察到的任何属性都不能观察到任何类型的排序.
具体来说,问题是"那里锁定的互斥锁"是没有意义的.它没有你可以采取行动的答案.无论虚构的答案是什么,互斥体的状态都可以立即改变.没有什么可以做的答案,如"是的,它被锁定"(它可能会同时解锁),或"不,它已解锁"(它可能会在你到达之前被锁定).
该只可以用一个互斥做的一件事就是试图将其锁定.你要么失败,要么知道它被锁定了,或者你成功了,因此知道它不是,现在你有了锁.
| 归档时间: |
|
| 查看次数: |
2603 次 |
| 最近记录: |