7

假设我dispatch_async()按顺序调用了 3 次:

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

// some code here

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

// more code here

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

这总是会像这样执行吗

[self doOne], [self doTwo], 那么[self doThree], 还是订单有保障?

在这种情况下,问题可能是主队列是串行的还是并发的。

4

2 回答 2

17

从文档中:

dispatch_get_main_queue

返回与应用程序主线程关联的串行调度队列。

所以主队列是一个串行队列,并且[self doOne], [self doTwo],[self doThree]是按照这个顺序依次执行的。

于 2013-05-18T19:14:33.290 回答
4

并发编程指南,关于调度队列

主调度队列是一个全局可用的串行队列,它在应用程序的主线程上执行任务。[强调我的]

于 2013-05-18T19:16:44.777 回答