DispatchQueue.main.async和DispatchQueue.main.sync之间的区别

DispatchQueue.main.async和DispatchQueue.main.sync之间的区别,第1张

DispatchQueue.main.async和DispatchQueue.main.sync之间的区别

当您使用

async
它时,可以使调用队列继续前进,而不必等到执行分派的块。相反,
sync
将使调用队列停止并等待,直到您在块中分派的工作完成为止。因此
sync
容易导致死锁。尝试
DispatchQueue.main.sync
从主队列中运行,该应用将冻结,因为调用队列将一直等待,直到分派的块结束,但它甚至无法启动(因为该队列已停止并正在等待)

什么时候使用

sync
?当您需要等待在不同队列上完成的事情然后才继续在当前队列上工作时

使用同步的示例:

在串行队列上,可以将其

sync
用作互斥体,以确保只有一个线程能够同时执行受保护的代码段。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5674039.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存