3
我知道下面是你應該如何使用NSCondition:NSCondition - 多線程
方法1:
[cocoaCondition lock];
while (someConditionIsTrue)
[cocoaCondition wait];
// Do real work here.
[cocoaCondition unlock];
方法2:
[cocoaCondition lock];
timeToDoWork++;
someConditionIsTrue = NO;
[cocoaCondition signal];
[cocoaCondition unlock];
所有我想要的是使用一個簡單的鎖,可以從不同的線程鎖定和解鎖,所以我明白我需要使用NSCondition,並且蘋果文檔說檢查條件是需要額外的謹慎,即使你不要在邏輯上使用它(來自apple doc:「爲了避免由這些虛假信號引起的問題,您應該總是使用謂詞與條件鎖定結合使用)」。
這些方法之間存在依賴關係,但它有兩種方式,這意味着在另一個方法釋放鎖之前,沒有人可以完成它們的工作主體(這可能會在從主體派發的第三個線程上釋放鎖定它的方法的工作)。
是否有可能從這兩種方法等待條件並在兩者結束時發出信號?
如果我有3個線程的method1同時等待,他們將按什麼順序進入工作主體?我猜這是按照他們進入等待的順序,我是否正確?