最近コルーチンの内部実装についての動画を見たため、内部実装について概要をまとめた。
一度内部実装を見ておくと理解が深まる!
———————————————————————————
コルーチンは コンパイル変換で状態マシン化 される
サスペンドは Continuation を保存してスレッドを解放
再開は Dispatcher が適切なスレッドで実行
delay/I/O は イベント駆動で resume(busy-loop なし)
Job により 構造化並行性とキャンセル伝搬 を保証
キャンセルは 協調的(フラグ+例外)
Flow/Channel はこの基盤の上に構築された抽象
この組み合わせにより、Kotlin は 軽量・安全・予測可能 な非同期モデルを実現しています。
「軽量スレッド」という比喩よりも、“再開可能な関数+スケジューラ” と捉えるほうが、実装イメージに近いと言えるでしょう。