- 121 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 16:36:17 ]
- lua_resume(ls, ...) で中断しているスクリプトがあるんだけど、
再開するのではなく、リセットして最初から実行しなおしたい場合がある。 このとき、どうすればいい? マニュアルには lua_newthread で作ったスレッドは解放しなくていい、 GCが管理すると書いてあるけど、さすがにいきなり ls = lua_newthread(..); って上書きするんだと、いつまでたっても古い ls の内容が削除されないよね? だってLua側からしてみれば、古い ls はあくまでも中断してるのであって、 いつ再開されるかわからないからGCで回収できないし、 古い ls はもはや不要になったよー ってことをまったく Lua 側に知らせてないし。 かといって、明示的に ls が不要になったことを伝えるために lua_close(ls); ls = lua_newthread(...); lua_resume(ls, ...); とやってみると、lua_newthread で内部エラーが発生する(メモリ違反ぽい) どうすればいいですか?
|

|