コルーチン

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。VolkovBot (会話 | 投稿記録) による 2010年11月5日 (金) 12:43個人設定で未設定ならUTC)時点の版 (ロボットによる 除去: ko:코루틴)であり、現在の版とは大きく異なる場合があります。

コルーチン(co-routine)とはプログラミングの構造の一種。サブルーチンがエントリーからリターンまでを一つの処理単位とするのに対し、コルーチンはいったん処理を中断した後、続きから処理を再開できる。接頭辞co-は協調を意味するが、複数のコルーチンが中断/継続により協調動作を行うことによる。

サブルーチンと異なり、状態管理を意識せずに行えるため、協調的処理、イテレータ、無限リスト、パイプなど、継続状況を持つプログラムが容易に記述できる。

コルーチンはサブルーチンを一般化したものと考えられる。コルーチンをサポートする言語にはModula-2SimulaIconLuaC#Limboなどがある。マルチスレッドで原理的には同じことができるため、現在はそちらが使われるケースが多い。これはマルチスレッドであれば直接OSの支援を受けられることや、エントリー/リターンの構造を変えずにコードを多重化できるので、過去の言語との親和性が良いなどが理由である。ただし、マルチスレッドの場合プログラマが同期制御を行わなければならないので、コルーチンのような簡易さはない。

"coroutine"の名称は、メルヴィン・コンウェイの1963年の論文[1]が起源である。

関連項目

参照文献

  1. ^ M.E. Conway, Design of a separable transition-diagram compiler, Communications of the ACM, Vol. 6, No. 7, July 1963