コルーチンとは? わかりやすく解説

コルーチン

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/08/28 02:36 UTC 版)

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

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

コルーチンはサブルーチンを一般化したものと考えられる。コルーチンをサポートする言語には Modula-2SimulaIconLuaC#LimboSwift などがある。マルチスレッドで理論的には同じことができるため、現在はそちらが使われるケースが多い。これはマルチスレッドであれば直接OSやCPUスレッドの支援を受けられることや、エントリー/リターンの構造を変えずにコードを多重化できるので、過去の言語との親和性が良いなどが理由である。一方、マルチスレッドの場合はプログラマがスレッド間の同期や排他制御を行わなければならないが、その結果スレッドが実行を続けられなくなった場合は別のスレッドを実行するために暗黙的にコルーチンを呼び出す。この点では、マルチスレッドはコルーチンの抽象度をより高めた応用と解釈することができる。

言語仕様以外の例では、マルチタスクOSやユーザスレッドにおけるコンテキストスイッチがコルーチンとなる。この点では、上記の問題は「コルーチンを言語仕様とOSやスレッドライブラリのどちらに持たせるか」とも解釈できる。この場合でもコルーチンをスレッドやタスクのスリープのために明示的に呼び出すだけでなく、割り込みや例外処理の結果暗黙的に実行する場合の両方がある。

コルーチンという名称は、メルヴィン・コンウェイの1963年の論文[1]に最初の記述がある。

関連項目

脚注

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

コルーチン

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/17 08:04 UTC 版)

Lua」の記事における「コルーチン」の解説

コルーチンは状態遷移記述するのに便利である。 -- Lua コルーチンによって非同期状態遷移同期的記述する例。-- 1を返している間は動作続行中。0を返す動作完了function doAction() -- 4フレーム分だけ左へ移動。 for i = 1, 4, 1 do print("Move Left " .. i) coroutine.yield(1) end -- 1フレーム分だけ一時停止print("Pause") coroutine.yield(1) -- 3フレーム分だけ右へ移動。 for i = 1, 3, 1 do print("Move Right " .. i) coroutine.yield(1) end print("End") return 0endlocal doActionAsync = coroutine.wrap(doAction)-- コルーチンの動作テスト。-- 実際にフレームごとに1回だけ呼び出す。while doActionAsync() ~= 0 doend

※この「コルーチン」の解説は、「Lua」の解説の一部です。
「コルーチン」を含む「Lua」の記事については、「Lua」の概要を参照ください。

ウィキペディア小見出し辞書の「コルーチン」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「コルーチン」の関連用語

コルーチンのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



コルーチンのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのコルーチン (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのLua (改訂履歴)、継続 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS