lua-users home
lua-l archive

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


* Patrick Donnelly (batrick@batbytes.com) wrote:

> > I want lua code to be running as a single coroutine. For example,
> > imagine C/C++ GUI application with logic written in lua. GUI event
> > loop runs in C/C++, and lua code needs to drop back to it when it
> > needs input from the user (it can't get user input by calling C/C++
> > function, as this would not resume event loop). I'm trying to use a
> > single lua coroutine for it, but I'm confused about whether I can
> > call lua_resume on a lua_State returned by lua_open, not lua_newthread,
> > cause lua_resume documentation says "To start a coroutine, you first
> > create a new thread".
> 
> It sounds like a bad idea to use the main thread for lua_resume for
> one simple reason: what happens in the event of an error? The main
> thread is "dead" and no longer can be resumed or used (or at least,
> this is undefined in the manual).

Why would I want to resume erroneous code? All I need in case of 
error is to get some debug info, and that's pretty documented - 
error string is on the stack, and stack trace is also possible to 
get.

> Better to use a dedicated thread created using lua_newthread I think...

I prefer to not spawn entities I do not need.

However, out of curiocity: should/may lua_State got from lua_newthread
be disposed in any way (lua_close) after it finishes? Yields? Gets an
error?

-- 
Dmitry Marakasov   .   55B5 0596 FF1E 8D84 5F56  9510 D35A 80DD F9D2 F77D
amdmi3@amdmi3.ru  ..:  jabber: amdmi3@jabber.ru    http://www.amdmi3.ru