この記事について
注意
あくまで私の解釈です。
間違っているところがあるかもなので、その際には指摘してほしいです。
目的
- Swift Concurrencyの全体像を把握する
- 主な登場人物とその役割を把握することで、今後のSwiftConcurrencyについての学習をよりしやすくする
- Swift.orgの一部を抜粋し図解する
離さないこと
- 細々としたコーディングの仕方
- Swift Concurrency外のこと
- Architectureなど
- SwiftUI or UIKitの画面との繋ぎこみ
まずは図から
- Task: スレッドのイメージ
- actor: Task同士でデータを共有するオブジェクト
- Sendable: actorにデータを受け渡すためのオブジェクト
Swift Concurrencyの目的
非同期処理を並列に実行すること。
並列実行において
- それぞれの処理を完全に分離させること
- 値の競合を起こさせないこと
主な登場人物
Task
- 非同期処理を実行する
- Taskを起こすことで処理を完全に分けて実行できる
actor
- Taskで処理を分けたとしても、Task同士で値をやり取りしたい場合がある。その両者からのアクセスをできるようにする役割を持つ
Sendable
- Task間で安全にデータを渡すために使用する
- 参照型のオブジェクトだと競合などの問題を回避できない