C Pthreads互斥值?

3 c mutex pthreads

我正在编写一个包含几个关键部分的程序.问题是我需要在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)

这可能吗?

asv*_*kau 5

你想要的pthread_mutex_trylock().

从该链接:

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)