
内部実装から学ぶSwift Concurrency ー なぜasync関数は中断・再開できるのか
無料で読める本
Swift Concurrencyは、今やほとんどのiOS開発者が利用しており、async関数が「中断・再開が可能である」という仕様についても広く知られている。 一方で「どういった仕組みによってそれが実現されているのか」を説明できる開発者は少ないのではないか。 仕組みをブラックボックスのまま使い続け、確信を持って実装・デバッグ・レビューできずにいる開発者も少なくないだろう。 そこで本書では、Swiftのソースコードを参照しながら、Swift Concurrencyの内部実装に踏み込み、async関数の中断・再開の仕組みを解明する。
Chapters
はじめに
Swiftコードがコンパイルされる流れ
LLVMのコルーチンとは
Async Lowering — 高水準なLLVM IRを読む
Loweringによる関数分割 — 低水準なLLVM IRを読む
swift_task_switchの実装
swift_task_enqueueにおける分岐
Task実行時のGCDへのディスパッチ
MainActor実行時のGCDへのディスパッチ
Actor (非MainActor) 実行時のGCDへのディスパッチ
まとめ
Author
Topics