我試圖加快我的應用程序的啓動,並且我的想法之一是使用異步調度隊列。我有兩個任務可以在啓動時彼此相鄰運行(實際上相當大的任務)。但是,它們都具有在主線程(主要是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