-1

我很困惑串行隊列和併發隊列是什麼。併發是否允許一堆操作在隊列中,然後將它們拆分到可用的線程上,而串行是一樣的,但將其限制爲一個線程並一次等待一個線程完成?串行隊列與併發隊列有何不同?

文檔中的解釋看起來很混亂。

+0

您應該閱讀Apple文檔https://developer.apple.com/library/ios/DOCUMENTATION/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html –

回答

4

「串行」意味着提交給隊列中的塊被順序地執行, 即第二塊沒有之前首先執行一個已經完成。 它確實是而不是表示塊在同一個線程上執行。

「併發」是指提交給隊列這些塊可以執行 並行地(在不同的線程)。

在這兩種情況下,GCD都使用「線程池」來執行塊,因此您無法知道將在哪個線程上執行塊。唯一的例外是 執行主線程上的所有塊的「主隊列」。