我试图加快我的应用程序的启动,并且我的想法之一是使用异步调度队列。我有两个任务可以在启动时彼此相邻运行(实际上相当大的任务)。但是,它们都具有在主线程(主要是UI代码)上运行的重要部分。主线程上的多个GCD调度
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的在开机一样,他们将轮流在执行,或将完整的第一块首先执行,那么第二块?
如果它是一个串行队列,那我为什么可以调用异步调度呢? – 2012-03-05 15:44:12
我不明白你的问题,为什么你不能? async只是意味着你想排入一个块,但现在不一定需要结果,或者希望它阻止你将它排入队列的当前操作。它不要求它在不同的线程上发生或立即开始。 – 2012-03-05 15:51:10
似乎有一种常见的误解,即“异步”和“并发”是同义词。我不确定它来自哪里,但是我看到它遍布堆栈溢出。 – 2012-03-05 16:56:27