2
我一直在尋找在NSCondition documentation例子,有一個小困惑:使用NSCondition正確
當你使用一個條件對象,第一步是鎖定 條件。鎖定條件確保您的謂詞和任務 代碼干擾使用同一 條件的其他線程的保護。完成任務後,您可以根據代碼的需要設置其他 謂詞或指示其他條件。 您應該始終設置謂詞和信號條件,同時按住條件對象鎖定的 。
清單4-3使用可可條件
[cocoaCondition lock];
while (timeToDoWork <= 0)
[cocoaCondition wait];
timeToDoWork--;
// Do real work here.
[cocoaCondition unlock];
清單4-4信令可可條件
[cocoaCondition lock];
timeToDoWork++;
[cocoaCondition signal];
[cocoaCondition unlock];
比方說,使用Cocoa條件的線程阻塞[cocoaCondition wait]
。由於[cocoaCondition unlock]
尚未被調用,因此它也具有cocoaCondition
鎖的所有權。
我的問題是 - 如何病情曾經得到的信號?一旦另一個線程試圖獲得鎖,不會阻塞嗎?