我正在编写一个包含几个关键部分的程序.问题是我需要在if语句中检查互斥锁的值.
我想做这样的事情:
if pthread_mutex(&mutex) == 0 // locked
// Do something
else if pthread_mutex(&mutex) == 1 // unlocked
// Do something else
Run Code Online (Sandbox Code Playgroud)
这可能吗?
从该链接:
pthread_mutex_trylock()函数应该等效于pthread_mutex_lock(),除非如果mutex引用的互斥对象当前被锁定(由任何线程,包括当前线程),则调用应立即返回....返回值...如果获取了互斥锁引用的互斥锁对象上的锁,则pthread_mutex_trylock()函数将返回零.否则,返回错误号以指示错误
所以你的代码会是这样的:
pthread_mutex_t *m = /* ... */;
if (pthread_mutex_trylock(m) == 0)
{
/* Success! This thread now owns the lock. */
}
else
{
/* Fail! This thread doesn't own the lock. Do something else... */
}
Run Code Online (Sandbox Code Playgroud)