pthread_cond_wait()函式的理解

sgy618發表於2011-02-11

pthread_cond_wait()函式的理解

[@more@]

pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t
*mutex)函式傳入的引數mutex用於保護條件,因為我們在呼叫pthread_cond_wait時,如果條件不成立我們就進入阻塞,但是進入阻塞這個期間,如果條件變數改變了的話,那我們就漏掉了這個條件。因為這個執行緒還沒有放到等待佇列上,所以呼叫pthread_cond_wait前要先鎖互斥量,即呼叫pthread_mutex_lock(),pthread_cond_wait在把執行緒放進阻塞佇列後,自動對mutex進行解鎖,使得其它執行緒可以獲得加鎖的權利。這樣其它執行緒才能對臨界資源進行訪問並在適當的時候喚醒這個阻塞的程式。當pthread_cond_wait返回的時候又自動給mutex加鎖。

實際上邊程式碼的加解鎖過程如下:
/************pthread_cond_wait()的使用方法**********/
pthread_mutex_lock(&qlock); /*lock*/
pthread_cond_wait(&qready, &qlock); /*block--&gtunlock--&gtwait() return--&gtlock*/
pthread_mutex_unlock(&qlock); /*unlock*/
/*****************************************************/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23168012/viewspace-1045826/,如需轉載,請註明出處,否則將追究法律責任。

相關文章