0
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
while(!weakSelf.isAnotherThreadCompleted && [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]])
;
[weakSelf doSomething];
});
将异步线程以这种方式等待另一个线程是否正确?GCD和线程等待
感谢您的详细解答,我只是想明白这样做是否正确。但我不明白为什么currentRunLoop会立即返回?现在它按照你说的那样工作,这就是为什么我打开这个话题。 – taffarel 2013-03-21 12:14:09
查看文档' - runMode:beforeDate:',如果没有连接到运行循环的输入源或计时器,它将立即返回。就你而言,你可能创建了一个新的运行循环,所以它没有任何附加。另外,当你使用'dispatch_async'时,你不能控制代码运行的线程,这是OS和GCD的业务。运行循环是线程特定的,因此您不应该在GCD调用中使用它们(除非您在主队列中,这是唯一保证位于特定线程上的主线程)。 – Guillaume 2013-03-21 12:23:06