コルーチンって好きだなぁ

公開:2013-02-08 20:56
更新:2020-02-15 04:37
カテゴリ:boost,c++,windows,コルーチン

Boost 1.53.0を今ビルドしようとしている。atomicやlockfreeも楽しみだが、Coroutineに一番惹かれるな。

コルーチン(co-routine)とはプログラミングの構造の一種。サブルーチンがエントリーからリターンまでを一つの処理単位とするのに対し、コルーチンはいったん処理を中断した後、続きから処理を再開できる。接頭辞co-は協調を意味するが、複数のコルーチンが中断/継続により協調動作を行うことによる。 サブルーチンと異なり、状態管理を意識せずに行えるため、協調的処理、イテレータ、無限リスト、パイプなど、継続状況を持つプログラムが容易に記述できる。
-- Wikipediaより

コルーチンは継続とかマイクロ・スレッドとかとも呼ばれる。WindowsのFibreFiberやユーザーモードスレッドなども関連しているといえばしているだろうか。協調型マルチスレッドを実現する手法としてよく紹介されるよね。あとは状態保持を減らせるからコードがすっきりするとか実装面でのメリットもよく言われる。気になるのは実行時のコストだけれども、スレッドよりは軽いといわれるんだけれどもBoostのはどうなんだろうね。