条件变量与互斥锁
與互斥鎖不同,條件變量是用來等待而不是用來上鎖的。條件變量用來自動阻塞一個(gè)線程,直到某特殊情況發(fā)生為止。通常條件變量和互斥鎖同時(shí)使用。
條件變量使我們可以睡眠等待某種條件出現(xiàn)。條件變量是利用線程間共享的全局變量進(jìn)行同步的一種機(jī)制,主要包括兩個(gè)動作:一個(gè)線程等待"條件變量的條件成立"而掛起;另一個(gè)線程使"條件成立"(給出條件成立信號)。
條件的檢測是在互斥鎖的保護(hù)下進(jìn)行的。如果一個(gè)條件為假,一個(gè)線程自動阻塞,并釋放等待狀態(tài)改變的互斥鎖。如果另一個(gè)線程改變了條件,它發(fā)信號給關(guān)聯(lián)的條件變量,喚醒一個(gè)或多個(gè)等待它的線程,重新獲得互斥鎖,重新評價(jià)條件。
pthread_mutex_lock(&pthreadMutex); ? ?//如果加鎖不成功,就在這里阻塞
pthread_cond_wait(&pthreadCond,&pthreadMutex);//加鎖成功后,等待條件變量成立,同時(shí)解鎖。被喚醒后又重新獲得鎖。
pthread_mutex_unlock(&pthreadMutex);
轉(zhuǎn)載于:https://www.cnblogs.com/think-spencer/archive/2012/03/08/2385714.html
總結(jié)
- 上一篇: 分享超酷的添加图片悬浮特效jQuery插
- 下一篇: [wp7游戏]wp7~~飞行射击精品游戏