Open3

Swift における並行処理、同期 / 非同期処理の扱い

nukopynukopy

Swift では Dispatch というフレームワークで並行処理を扱う。Grand Central Dispatch(GCD)という名前の方がよく知られているかもしれない。以後、Dispatch フレームワークを GCD と呼ぶ。

https://developer.apple.com/documentation/dispatch

GCD では、dispatch queue と呼ばれるキューでタスクを管理することで、マルチコアなハードウェア上で並行処理を実行する。

nukopynukopy

参考

公式リファレンス

記事など

nukopynukopy

登場人物

登場人物はざっくり 3 人。

  • タスク
    • 数値計算、API リクエストなどの処理のことをまとめて「タスク」と呼ぶ
  • Dispatch Queue
    • タスクを管理するキュー
  • (マルチコア CPU を持つ)タスクを処理するシステム

予め定義されたタスクを Dispatch Queue に入れ、それをシステムへ渡し、実行する。

タスク

数値計算、API リクエストなどの処理。

Swift の場合、主に「iOS / macOS / watchOS アプリの UI の実装に必要な処理」=「タスク」となる。

Dispatch Queue

タスクを管理するキュー

タスクを処理するシステム

マルチコア CPU を持つハードウェアを想定。