lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


When you are done with a thread (when lua_resume returns and it's not a yield), you should remove the thread directly from the stack, this will remove the reference to it and it can then be garbage collected (its a pain I know =/).
 
another method which I've not yet done but should work, is to create a new thread, create a lua reference to it (using lua_ref) then pop it off the stack immediately (so it doesn't get buried), and later when you are done with it, destroy the reference (lua_unref) and that should allow it to be GC'd
 
hope that helps,
 
Raymond Jacobs
Owner,
Ethereal Darkness Interactive

 
On 5/18/06, mos <mmosquito@163.com> wrote:

Hi

in lua5.1 manual:

lua_newthread
         lua_State *lua_newthread (lua_State *L);
There is no explicit function to close or to destroy a thread. Threads are
subject to garbage collection, like any Lua object

       I don't understand this , for example like Npc in a game

       function AI()
               while(true) do
                       walkto(A)
                       walkto(B)
                       ...
                       walkto(Z)
               end
       end

       I bind each npc with a lua_State by lua_newthread

       but the npc will die and i should close the lua_State , but I can
not.
       what can I do ? or some better suggestion ?

Best Regards
mos