Open3
Swift における並行処理、同期 / 非同期処理の扱い
Swift では Dispatch というフレームワークで並行処理を扱う。Grand Central Dispatch(GCD)という名前の方がよく知られているかもしれない。以後、Dispatch フレームワークを GCD と呼ぶ。
GCD では、dispatch queue と呼ばれるキューでタスクを管理することで、マルチコアなハードウェア上で並行処理を実行する。
参考
公式リファレンス
- Dispatch フレームワーク
- DispatchQueue
記事など
- Swift GCD 入門
- Swiftで複数の非同期処理の完了時に処理を行う
- [Swift] 複雑な非同期処理が作り出すコールバック地獄とネスト地獄を解消したい! セマフォを使ったシンプルなリファクト方法を試してみた
- Swiftでセマフォ(semaphore)にさわってみよう
登場人物
登場人物はざっくり 3 人。
- タスク
- 数値計算、API リクエストなどの処理のことをまとめて「タスク」と呼ぶ
- Dispatch Queue
- タスクを管理するキュー
- (マルチコア CPU を持つ)タスクを処理するシステム
予め定義されたタスクを Dispatch Queue に入れ、それをシステムへ渡し、実行する。
タスク
数値計算、API リクエストなどの処理。
Swift の場合、主に「iOS / macOS / watchOS アプリの UI の実装に必要な処理」=「タスク」となる。
Dispatch Queue
タスクを管理するキュー
タスクを処理するシステム
マルチコア CPU を持つハードウェアを想定。