ComputerCraftの非公式Wikiです。

Coroutine

要項

Lua5.1で追加されたcoroutine.*機能です。複数の処理を非同期で実行することができます。
メソッド名戻り値概要
coroutine.status( Coroutine コルーチン )String ステータス指定したコルーチンの状態を返します。
coroutine.resume( Coroutine コルーチン )任意の値コルーチンを開始、もしくは再開します。
coroutine.create( Function 関数)Coroutine 新しいコルーチン新しいコルーチンを作成します。
coroutine.yield(...)任意の値現在実行中のコルーチンを停止し、呼び出し元に制御を渡します。
coroutine.wrap( Function 関数)Function ラッパー新しいコルーチンを作成し、ラッパー関数を作って返します。
coroutine.running()Coroutine コルーチン現在実行中のコルーチンを返します。

他APIとの関係

os.pullEventRaw関数?はコルーチンの機能を使って実装されているので、通常このAPIを利用すると使用できなくなります。
よって、各種イベントは発生してもプログラ側から捉えることはできなくなります。また、この機能を使う他の関数はうまく動作しなくなります。
例:
  • os.pullEvent関数?:内部的にos.pullEventRawを使用しています。
  • rednet.receive関数?:rednet_messagetimerイベントを利用しています。
  • gps.locate関数?:modem_messagetimerイベントを利用しています。
  • http.get関数?:http_successhttp_failureイベントを利用しています。
  • io.read関数?でキーボード入力の受け取り:charkeyイベントを利用しています。
  • os.sleep関数?:timerイベントを利用しています。
  • textutils.slowPrint関数?:os.sleep関数?を利用しています。
  • textutils.pagedPrint関数?:keyイベントを利用しています。
  • TurtleAPI:ほとんどの関数がturtle_responseイベントを利用しています。

このような状況を回避してコルーチンを使用したい場合はParallelAPIを利用するのが最も簡単です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

メンバーのみ編集できます