我想知道是否有可能在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線程編程之下,因此就使用僞碼顯示的代碼片段我要找的邏輯。
我想知道是否有可能在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線程編程之下,因此就使用僞碼顯示的代碼片段我要找的邏輯。
與典型的互斥鎖,線程將休眠,直到它得到互斥體,並且當它,它就會出來鎖定所有其他線程,直到它解鎖互斥量。 pthread_mutex_trylock是你需要的。
if(pthread_mutex_trylock())
{
mutex_unlock()
}
else
{
}
語法不正確......不確定trylock的返回值是什麼,所以請在manpage或google上查找它們。
請注意,構造「如果(我可以得到互斥鎖)互斥鎖」沒有任何意義;它本質上具有競爭條件。因此您需要「嘗試鎖定互斥鎖」。 – 2011-03-21 13:37:09