Eri*_*k S 1 iphone multithreading objective-c grand-central-dispatch ios
我正在尝试加速我的应用程序的启动,我的一个想法是使用异步调度队列.我有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?
});
Run Code Online (Sandbox Code Playgroud)
我的问题是:如果我在启动时调用2个dispatch_async,就像在这个例子中一样,它们会轮流执行,还是先完成第一个块,然后执行第二个块?
主队列是一个串行队列.添加到串行队列的块按添加顺序执行,一次只执行一个(串行).在您的示例中,task2将在task1完成后才会启动.
如果您希望它们并发运行,则需要将它们分配给其中一个全局并发队列.
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 */});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1463 次 |
| 最近记录: |