dispatch_sync(dispatch_get_global_queue(xxx), task) 是同步还是异步

2023-12-10

正如Apple的文档所说,dispatch_get_global_queue()是一个并发队列,而dispatch_sync是串行的意思。那么任务是异步处理还是同步处理?


您对队列是什么以及异步与同步的含义感到困惑。

队列是可以运行块的实体。这些可以是串行的或并发的。串行意味着如果您按照 A、B、C、D 的顺序放置块,那么它们将被执行 A,然后 B,然后 C,然后 D。并发意味着这些相同的块可能会以不同的顺序执行,并且可能甚至不止一个(显然,假设您有多个核心可以运行)。

然后是异步与同步。异步意味着当你调用dispatch_async,它将返回立即地并且该块将在队列中排队。同步意味着当您拨打电话时dispatch_sync仅当块执行完毕后才会返回。

所以要完全回答你的问题,如果你dispatch_sync到全局并发队列上,那么该块将被运行,可能与该队列上的其他块并行,但以同步方式运行 - 即,直到块完成为止它不会返回。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dispatch_sync(dispatch_get_global_queue(xxx), task) 是同步还是异步 的相关文章

随机推荐