你可以调用dispatch_sync从一个并发线程到自己没有死锁吗?

时间:2015-06-16 06:48:05

标签: ios objective-c multithreading swift grand-central-dispatch

我知道你会在串行队列上执行此操作会死锁,但我没有发现任何通过在并发队列上执行此操作来提及死锁的内容。我只是想验证它不会死锁(它似乎不会,因为它只会阻塞队列中的一个线程,任务将在同一队列上的另一个线程上运行)

此外,您是否可以通过在并发队列上调用dispatch_sync来控制执行顺序? (它被提到here)我不明白为什么会发生这种情况,因为异步vs同步与调用者线程有关。

1 个答案:

答案 0 :(得分:2)

这不会死锁,因为调度块可以立即开始运行 - 它不是一个串行队列,所以它不必等待当前块完成。

但它仍然不是一个好主意。这将阻止一个线程导致操作系统启动一个新线程(因为它在线程处于休眠状态时仍有空闲CPU)浪费内存。