0
所以pthread_cond_wait()
的想法是,它會解鎖互斥,等待條件。pthread_cond_wait()如何工作?
允許假設你將手動首先解鎖互斥體,然後等待一個條件。在這段時間內,在這兩個操作之間,你必須假定可能發生不好的事情,另一個線程會鎖定互斥鎖,這不好。如果你先等待然後解鎖,那也是一樣,這是不可能的。
所以,在這裏我的問題是:
如何pthread_cond_wait()
實際工作?
的線程調用的函數,並傳遞一個鎖定的互斥和therafter的條件等待解決?
如何另一個線程然後修改變量,如果它已經被這個線程鎖定?
我首先想到的是,互斥量必須是遞歸的,但是是遞歸只允許同一個線程對互斥體多次鎖定。
請在*原子操作一些研究*。解鎖並將線程的狀態更改爲等待發生在一個原子操作中,可能在操作系統內核中。 –