假設我打電話dispatch_async()
三次依次是:主中央調度隊列是串行還是併發?
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]
,或者訂單有保障?
在這種情況下,問題可能在於主隊列是串行還是併發。
此外,它必須是串行,因爲塊運行在同一個線程上。單個線程不能同時運行多個塊。 – Sven
@Rob是的,但提交給主隊列的塊將在主線程中執行。這是主要隊列的整點。隊列不執行塊,總是發生在某個線程中。通常由GCD管理的專用線程,但是主隊列的主線程。 – Sven
@Sven你誤會了我。我的觀點僅僅是澄清這對於主隊列來說是正確的,不適用於一般隊列。 – Rob