「iOS スレッディング プログラミング ガイド」を読んでいるときに、「条件の使用」セクションのサンプル コードに戸惑いました。
NSCondition クラスの使用方法を示すために使用されているリスト 4-3とリスト 4-4を見てください。スレッドが 4-3 を使用して条件の待機を開始すると、2 番目のスレッドが 4-4 を使用して条件を通知しようとします。条件は最初のスレッドによってロックされているため、2 番目のスレッドが条件を通知する可能性はありますか? そうでない場合は、デッドロックのようなものではありませんか?
これがばかげた質問である場合は、私を許してください:-)
Cocoa 条件の使用方法について Apple が提供するサンプルを次に示します。
コード リスト 4-3 Cocoa 条件の使用
[cocoaCondition lock];
while (timeToDoWork <= 0)
[cocoaCondition wait];
timeToDoWork--;
// Do real work here.
[cocoaCondition unlock];
コード リスト 4-4 Cocoa の状態を通知する
[cocoaCondition lock];
timeToDoWork++;
[cocoaCondition signal];
[cocoaCondition unlock];