コンテンツにスキップ

コルーチン

提供: Wikippe

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

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

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

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

関連項目

脚注

  1. メルヴィン・コンウェイ「テンプレート:Langテンプレート:Lang、第6巻、No. 7、1963年7月

テンプレート:Computer-stub