6
每個線程默認都有一個關聯的調度隊列?我只是想知道我是否可以在每種情況下使用dispatch_semaphore
,或者如果我需要用明確的隊列將其包裝在明確的調度呼叫中。是否每個NSThread都自動成爲一個調度隊列?
每個線程默認都有一個關聯的調度隊列?我只是想知道我是否可以在每種情況下使用dispatch_semaphore
,或者如果我需要用明確的隊列將其包裝在明確的調度呼叫中。是否每個NSThread都自動成爲一個調度隊列?
它並不像你的問題所暗示的那樣工作。默認情況下,有一個與主線程關聯的主調度隊列,以及三個併發的全局隊列(分別爲高,默認和低優先級)。
併發隊列管理自己的線程資源,而不是與任何特定的線程關聯。
事實上,它說很特別的man頁面上dispatch_queue_create()
:
「隊列未綁定到執行,並提交給獨立的隊列塊的任何特定的線程可以並行執行。」
至於你是否可以在調度隊列之外使用調度信號(問題的另一部分),答案是肯定的,你可以。它們在Mach信號量的基礎上實現,並且應該在任何地方工作。你可以在這裏看到代碼:
http://opensource.apple.com/source/libdispatch/libdispatch-84.5.5/src/semaphore.c