最終更新: harinezumi 2015年09月05日(土) 21:26:29履歴
Lua5.1で追加されたcoroutine.*機能です。複数の処理を非同期で実行することができます。
メソッド名 | 戻り値 | 概要 |
---|---|---|
coroutine.status( Coroutine コルーチン ) | String ステータス | 指定したコルーチンの状態を返します。 |
coroutine.resume( Coroutine コルーチン ) | 任意の値 | コルーチンを開始、もしくは再開します。 |
coroutine.create( Function 関数) | Coroutine 新しいコルーチン | 新しいコルーチンを作成します。 |
coroutine.yield(...) | 任意の値 | 現在実行中のコルーチンを停止し、呼び出し元に制御を渡します。 |
coroutine.wrap( Function 関数) | Function ラッパー | 新しいコルーチンを作成し、ラッパー関数を作って返します。 |
coroutine.running() | Coroutine コルーチン | 現在実行中のコルーチンを返します。 |
os.pullEventRaw関数?はコルーチンの機能を使って実装されているので、通常このAPIを利用すると使用できなくなります。
よって、各種イベントは発生してもプログラ側から捉えることはできなくなります。また、この機能を使う他の関数はうまく動作しなくなります。
例:
このような状況を回避してコルーチンを使用したい場合はParallelAPIを利用するのが最も簡単です。
よって、各種イベントは発生してもプログラ側から捉えることはできなくなります。また、この機能を使う他の関数はうまく動作しなくなります。
例:
- os.pullEvent関数?:内部的にos.pullEventRawを使用しています。
- rednet.receive関数?:rednet_messageやtimerイベントを利用しています。
- gps.locate関数?:modem_messageやtimerイベントを利用しています。
- http.get関数?:http_successやhttp_failureイベントを利用しています。
- io.read関数?でキーボード入力の受け取り:charかkeyイベントを利用しています。
- os.sleep関数?:timerイベントを利用しています。
- textutils.slowPrint関数?:os.sleep関数?を利用しています。
- textutils.pagedPrint関数?:keyイベントを利用しています。
- TurtleAPI:ほとんどの関数がturtle_responseイベントを利用しています。
このような状況を回避してコルーチンを使用したい場合はParallelAPIを利用するのが最も簡単です。
コメントをかく