コルーチン

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

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

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

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

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

関連項目

脚注

  1. メルヴィン・コンウェイ「Design of a separable transition-diagram compilerCommunications of the ACM、第6巻、No. 7、1963年7月
テンプレート:Asbox