gpt4 book ai didi

iphone - 主线程上的多个 GCD 调度

转载 作者:行者123 更新时间:2023-12-01 18:30:25 24 4
gpt4 key购买 nike

我正在尝试加快我的应用程序的启动速度,我对此的想法之一是使用异步调度队列。我有 2 个任务可以在启动时彼此相邻运行(实际上是相当大的任务)。但是,它们都有一个在主线程(主要是 UI 代码)上运行的重要部分。

dispatch_async(dispatch_get_main_queue, ^{
[self doTask1];
});

dispatch_async(dispatch_get_main_queue, ^{
[self doTask2];
//Will task 2 take turns with task 1, or will task 2 start after 1 is finished?
});

我的问题是:如果我像这个例子一样在启动时调用 2 个 dispatch_async,它们会轮流执行,还是首先执行完整的第一个 block ,然后是第二个 block ?

最佳答案

主队列是串行队列。添加到串行队列的 block 按照它们添加的顺序执行,并且一次只执行一个(串行)。在您的示例中,task2 在 task1 完成之前不会启动。

如果您希望它们同时运行,您需要将它们分派(dispatch)到全局并发队列之一。

dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(q, ^{/* this work may finish before other work added to this queue later */});

关于iphone - 主线程上的多个 GCD 调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9566634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com