[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Can LuaCoco yield from outside of a Lua C Function?
- From: mitchell <code@...>
- Date: Sat, 1 Oct 2011 12:49:10 -0400 (EDT)
Hi Mike,
On Fri, 30 Sep 2011, Mike Pall wrote:
mitchell wrote:
static VALUE l_yield(VALUE self, VALUE arg) {
lua_pushsomething(L, RUBY2LUA(arg));
lua_yield(L, 1); // coroutine.resume() should return the arg
printf("This should not be called right away due to lua_yield()\n");
...
}
The 'L' you're using here must be the lua_State for the coroutine,
not the main thread.
Thanks for the response. My question is how to I get the coroutine's Lua
state? What I gather from your response is that when run_ruby() is called,
the lua_State passed to it is the main thread.
Do I have to create the thread using coco's lua_newcthread() and use it's
returned Lua State? The documentation also states I can call
'coroutine.create' from C so would the following:
lua_getglobal(L, "coroutine");
lua_getfield(L, -1, "create");
lua_call(L, 1, ...);
work? If not, what do you mean?
Thanks a lot,
mitchell