2017-10-17 23 views
0

所以pthread_cond_wait()的想法是,它會解鎖互斥,等待條件。pthread_cond_wait()如何工作?

允許假設你將手動首先解鎖互斥體,然後等待一個條件。在這段時間內,在這兩個操作之間,你必須假定可能發生不好的事情,另一個線程會鎖定互斥鎖,這不好。如果你先等待然後解鎖,那也是一樣,這是不可能的。

所以,在這裏我的問題是:
如何pthread_cond_wait()實際工作?

的線程調用的函數,並傳遞一個鎖定的互斥和therafter的條件等待解決?

如何另一個線程然後修改變量,如果它已經被這個線程鎖定?

我首先想到的是,互斥量必須是遞歸的,但是是遞歸只允許同一個線程對互斥體多次鎖定。

+3

請在*原子操作一些研究*。解鎖並將線程的狀態更改爲等待發生在一個原子操作中,可能在操作系統內核中。 –

回答