当您使用async
它时,可以使调用队列继续前进,而不必等到执行分派的块。相反,sync
将使调用队列停止并等待,直到您在块中分派的工作完成为止。因此sync
容易导致死锁。尝试DispatchQueue.main.sync
从主队列中运行,该应用将冻结,因为调用队列将一直等待,直到分派的块结束,但它甚至无法启动(因为该队列已停止并正在等待)
什么时候使用sync
?当您需要等待在不同队列上完成的事情然后才继续在当前队列上工作时
使用同步的示例:
DispatchQueue.main.async和DispatchQueue.main.sync之间的区别
当您使用async
它时,可以使调用队列继续前进,而不必等到执行分派的块。相反,sync
将使调用队列停止并等待,直到您在块中分派的工作完成为止。因此sync
容易导致死锁。尝试DispatchQueue.main.sync
从主队列中运行,该应用将冻结,因为调用队列将一直等待,直到分派的块结束,但它甚至无法启动(因为该队列已停止并正在等待)
什么时候使用sync
?当您需要等待在不同队列上完成的事情然后才继续在当前队列上工作时
使用同步的示例: