DispatchQueue
1757 ワード
DispatchQueue
はシリアルと同時に分けられ、その完全な初期化方法は:DispatchQueue.init(label: String, qos: DispatchQoS, attributes: DispatchQueue.Attributes, autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency, target: DispatchQueue?)
で表示され、これらのパラメータにはlabelを除いてデフォルト値があります(labelはキューのラベルを表し、com.onevcat.Kingfisher.Animator.preloadQueue
などの逆ドメイン名文字列に値を伝えることを推奨します).label以外のパラメータがデフォルト値を使用する場合、初期化メソッドはシリアルキューを返します.コンカレントキューを返す必要がある場合、パラメータattributesは.concurrentでいいです.DispatchQueue.Attributesは、concurrentとinitiallyInactiveの2つの静的変数を提供する構造体タイプです(シリアルキューを表す静的変数はありません).attributesパラメータがinitiallyInactiveに値している場合、タスクは自動的に実行されず、開発者がactivate()トリガを手動で呼び出す必要があります.ただし、コードはシリアルで行われています.タスクを手動でトリガーし、並列に実行する場合は、attributesパラメータを指定して、[.concurrent,.initiallyInactive]の配列を受け入れることができます.DispatchQoS:1つの構造体がキューを表す優先度であり、6の中から選択可能な値がある.優先度が高い順に public static let userInteractive: DispatchQoS
public static let userInitiated: DispatchQoS
public static let utility: DispatchQoS
public static let background: DispatchQoS
//default unspecified userInteractive background
// , .
public static let `default`: DispatchQoS
public static let unspecified: DispatchQoS
DispatchQueue.AutoreleaseFrequencyには、次の3つの属性値があります.inherit、.それは...never.