Skip to content

lua_resume

指定されたスレッドでコルーチンを開始または再開します。

[-?, +?, -]

c
int lua_resume (lua_State *L, int narg);

説明

指定されたスレッドでコルーチンを開始し、再開します。

コルーチンを開始するには、まず新しいスレッドを作成します(lua_newthreadを参照);次に、そのスタックにメイン関数と任意の引数をプッシュします;次にlua_resumeを呼び出し、nargは引数の数です。この呼び出しは、コルーチンが一時停止または実行を終了すると戻ります。戻ったとき、スタックにはlua_yieldに渡されたすべての値、または本体関数によって返されたすべての値が含まれます。lua_resumeは、コルーチンが一時停止した場合はLUA_YIELDを、コルーチンがエラーなしで実行を終了した場合は0を返し、エラーが発生した場合はエラーコードを返します(lua_pcallを参照)。エラーが発生した場合、スタックは巻き戻されないので、デバッグAPIを使用できます。エラーメッセージはスタックのトップにあります。コルーチンを再開するには、yieldからの結果として渡す値のみをスタックに置き、lua_resumeを呼び出します。

サンプルコード

c
int status = lua_resume(L, 0);
if (status == LUA_YIELD) {
    printf("コルーチンが一時停止しました\n");
}

このコードは、コルーチンを再開し、一時停止した場合にメッセージを表示します。

互換性

  • Lua5.1

関連項目

  • lua_yield
  • lua_newthread