2016-06-29 5 views
4

これはまっすぐな質問です。デフォルトでは、DispatchQueue .serialまたは.concurrentですか?

let serial = DispatchQueue(label: "serial", attributes: .serial) 
let concurrent = DispatchQueue(label: "concurrent", attributes: .concurrent) 
let q = DispatchQueue(label: "q") 

私はqについて検査することができます。

PlaygroundPage.current.needsIndefiniteExecution = trueと一緒に遊び場で走っていますが、私は遊び場(非同期のものがあるジャンクの種類)や文書化されていない動作に依存したくありません。

誰かがドキュメントへのリンク付きの堅い答えを提供できますか?

答えて

5

スウィフト3より前のデフォルトのディスパッチキュータイプはserial-passing nil into the attributes parameterdispatch_queue_createでシリアルキューが生成され、デフォルトのキュータイプが変更される理由はありません。残念ながら、これを確認できるDispatchQueueに関するドキュメントは見つかりませんでした。

しかし、looking at the source codeは、これはまだ確かにケースであることが明らかになった:

public convenience init(
    label: String, 
    attributes: DispatchQueueAttributes = .serial, 
    target: DispatchQueue? = nil) 
{ 
    ... 
} 

私はいつも私のコードをより明確にし、混乱のこの種のを防ぐために、明示的に属性を指定することを好むが。

+0

ソースコードのリンクは素晴らしいです、ありがとう。私は、xcodeでメソッド名をcmd +クリックしたときに、デフォルトのparam実装が表示されませんでした。 – SimplGy

+0

@SimplGy喜んで:) – Hamish

関連する問題