2011-03-21 56 views
1

我想知道是否有可能在Linux下使用POSIX線程庫實現以下邏輯。如何檢測互斥情況

given a mutex 
    if (I can get the mutex) { 
    lock the mutex 
     call fun A 
    unlcok the mutex 
    } 
    else { 
     call fun B 
    } 

我是新來的Linux線程編程之下,因此就使用僞碼顯示的代碼片段我要找的邏輯。

+0

請注意,構造「如果(我可以得到互斥鎖)互斥鎖」沒有任何意義;它本質上具有競爭條件。因此您需要「嘗試鎖定互斥鎖」。 – 2011-03-21 13:37:09

回答

1

與典型的互斥鎖,線程將休眠,直到它得到互斥體,並且當它,它就會出來鎖定所有其他線程,直到它解鎖互斥量。 pthread_mutex_trylock是你需要的。

if(pthread_mutex_trylock()) 
{ 
mutex_unlock() 
} 
else 
{ 

} 

語法不正確......不確定trylock的返回值是什麼,所以請在manpage或google上查找它們。