コルーチンとは?
こるーちん
処理を途中で一時停止し、後から再開できるプログラムの実行単位で、非同期処理や協調的マルチタスクを効率よく実現する仕組みです。
コルーチン(Coroutine)とは、実行を途中で中断(サスペンド)し、後から中断した地点から再開(レジューム)できる特殊なサブルーチンです。通常の関数が呼び出し元と実行制御を一方向にしか渡せないのに対し、コルーチンは双方向に実行制御を行き来させることができます。
コルーチンの仕組みとして、実行コンテキスト(ローカル変数やプログラムカウンタ)を保存したまま制御を返し、再開時にはそのコンテキストを復元します。これにより、スレッドを新たに作成するコストなしに、複数の処理を協調的に切り替えることができます。
主な用途は以下の通りです。
- 非同期I/O処理:ファイルアクセスやHTTPリクエストの待機中に他の処理を進める
- ジェネレータ:大量データを逐次生成してメモリ使用量を抑える
- ゲームのAI制御:複数のキャラクター行動を協調的にシミュレートする
- UIイベント処理:ブロッキングなしにユーザー操作を処理する
Kotlin、Python(async/await)、JavaScript(Generator、async/await)、Lua、Goなど多くの言語でサポートされています。特にKotlinのコルーチンはAndroid開発での非同期処理の標準的な手法として広く使われています。スレッドに比べて軽量で、数千〜数万のコルーチンを同時に扱うことも現実的です。
使い方・例文
WebサーバーでHTTPリクエストを処理する際、データベース問い合わせの待機中にコルーチンが一時停止して他のリクエスト処理に制御を渡し、応答が返ったら再開する、という非同期処理の実装によく使われます。
この用語をシェア
最終更新: