NSCondition 是一种特殊类型的锁,通过它可以实现不同线程的调度。一个线程被某一个条件所阻塞,直到另一个线程满足该条件从而发送信号给该线程使得该线程可以正确的执行。比如说,你可以开启一个线程下载图片,一个线程处理图片。这样的话,需要处理图片的线程由于没有图片会阻塞,当下载线程下载完成之后,则满足了需要处理图片的线程的需求,这样可以给定一个信号,让处理图片的线程恢复运行。
- (void)download {
[self.condition lock]; //TODO: 下载文件代码
if (donloadFinish) { // 下载结束后,给另一个线程发送信号,唤起另一个处理程序
[self.condition signal];
[self.condition unlock];
}
}
- (void)doStuffWithDownloadPicture {
[self.condition lock];
while (!donloadFinish) {
[self.condition wait];
} //TODO: 处理图片代码
[self.condition unlock];
}