OS&Swift-DispatchQueueの学習


  • 管理措置項目実行のクラス
  • キューに追加された作業項目は、システム管理のThread Poolによって処理され、完了後に自動的にThreadが解放される
    主にいつ使いますか.
    →サーバからデータ、画像、ビデオなどのマルチメディア処理などCPU使用量の大きい処理を取得し、個別のThreadで処理を行い、その結果をMain Threadに転送して画面に表示する.
  • DispatchQueueのデフォルトタイプは
  • で、シリアル→同時

    Queueタイプ


    Serial
    操作は、
  • キューに登録されている順序で実行されます.
  • は、1つのタスクを実行し、キュー内の他のタスクを実行終了まで延期し、前のタスクが完了した後に実行します.
  • Concurrent
  • 実行中のタスクの完了を待つのではなく、キュー内のタスクを使用して個別のThreadを使用して同時に実行します.( Concurrently )
  • 並列処理

  • メイン番組

  • main : アプリケーション・プライマリ・スレッドに関連付けられた  Serial DispatchQueueを返却します.
     class var main: DispatchQueue { get }

  • Label:キューを識別する文字列ラベル.
     var label: String { get }

  • qos :  DispatchQoS構造体タイプのproperty.キュー・タスクを効率的に実行するには、複数の優先度オプションを指定します.
     var qos: DispatchQoS { get }
  • 主な方法

  • sync(execute:) :  DispatchQueueで、モジュールが完了するのを待つモジュールをキューに追加します.
    func sync(execute block: () -> Void)

  • async(execute:) :  DispatchQueueにおいて、モジュールを非同期で実行するために追加し、直ちに実行する.
     func async(execute workItem: DispatchWorkItem)

  • asyncAfter(deadline:execute:) : 指定された時間に実行  DispatchQueueに追加します.指定した時間後にすぐに実行します.
     func asyncAfter(deadline: DispatchTime, execute: DispatchWorkItem)

  • global(qos:) : システムのグローバルキューに戻る
    class func global(qos: DispatchQoS.QoSClass = default) -> DispatchQueue
  • 以上、「https://www.boostcourse.org/mo326/lecture/16917」を参考に学習した内容をまとめました.