- 129 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 21:20:37 ]
- >>127
だから削除したいならスレッドの参照を潰せばいいだけでしょ? 自分で最後に答え書いてるじゃん! 中断中のコルーチンが参照されなくなった場合に GC 対象になるかどうかは マニュアルにも明言されてない、どっちなの? って質問なら確かにわかりにくいとは思うが。 int main(int argc, char* argv[]) { lua_State* L = lua_open(); luaL_openlibs(L); lua_State* thread = lua_newthread(L); luaL_loadstring(thread, "print('co1'); coroutine.yield(); print('co2');"); lua_resume(thread, 0); //lua_settop(L, 0); lua_gc(L, LUA_GCCOLLECT, 0); lua_resume(thread, 0); lua_close(L); return 0; } lua_newthreadで積んだスレッドを潰す処理であるlua_settopの行のコメントを削除すると 二回目のlua_resumeの時点で落ちるところから「GC対象になる」が正解みたいやね。
|

|