[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Can LuaCoco yield from outside of a Lua C Function?
- From: mitchell <code@...>
- Date: Thu, 29 Sep 2011 20:24:51 -0400 (EDT)
Hi,
I am running a Ruby interpreter and the Lua interpreter within a single
application and I was wondering if I can call lua_yield() from within a
Ruby function using LuaCoco. So far I'm getting the usual "attempt to
yield across C-boundary" error, but my implementation might be erroneous.
Here's a quick overview of the code:
-- Lua code
co = coroutine.create(function()
run_ruby() // calls the c function below
print('done')
end)
value = coroutine.resume(co)
----------
// Lua C function
static int run_ruby(lua_State *L) {
ruby_init_stuff();
rb_define_global_function("lua_yield", l_yield, 1); // l_yield is below
ruby_run(some_script) // where some_script calls "lua_yield"
return 0;
}
// Ruby function
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");
...
}
----------
Thanks for any pointers.
mitchell