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