你能从一个并发线程调用 dispatch_sync 到它自己而不发生死锁吗?
Can you call dispatch_sync from a concurrent thread to itself without deadlocking?
我知道在串行队列上执行此操作会导致死锁,但我还没有发现任何提及在并发队列上执行此操作会导致死锁的内容。我只是想验证它不会死锁(它似乎不会,因为它只会阻塞队列中的一个线程,任务会 运行 在同一队列的另一个线程上)
此外,您是否可以通过在并发队列上调用 dispatch_sync 来控制执行顺序? (提到 here)我不明白为什么会发生这种情况,因为异步与同步必须与调用者线程有关。
这不会死锁,因为分派的块可以立即启动 运行 - 它不是串行队列,因此不必等待当前块完成。
但这仍然不是一个好主意。这将阻塞一个线程,导致 OS 启动一个新线程(因为它仍然有空闲 CPU,因为线程正在休眠)浪费内存。
我知道在串行队列上执行此操作会导致死锁,但我还没有发现任何提及在并发队列上执行此操作会导致死锁的内容。我只是想验证它不会死锁(它似乎不会,因为它只会阻塞队列中的一个线程,任务会 运行 在同一队列的另一个线程上)
此外,您是否可以通过在并发队列上调用 dispatch_sync 来控制执行顺序? (提到 here)我不明白为什么会发生这种情况,因为异步与同步必须与调用者线程有关。
这不会死锁,因为分派的块可以立即启动 运行 - 它不是串行队列,因此不必等待当前块完成。
但这仍然不是一个好主意。这将阻塞一个线程,导致 OS 启动一个新线程(因为它仍然有空闲 CPU,因为线程正在休眠)浪费内存。