Hello,
I’ve got a simulation engine using c.coroutines. I’d like to implement some of them with lua. However I’d like to share the same lua context for all coroutines. So basically I’d like this c.coroutine package to control execution of lua.coroutines with scheduling them.
Is it possible to write something like this (sorry only algo, I haven’t looked in detail Lua API, hope it is still clear enough) ?
// C side
Lua_State* global_state;
c_start() {
// create interpreter and start code after
global_state = lua_open();
handle_script(L, …);
c_coroutine_schedule();
}
my_c_coroutine() {
me = id++;
while (1) {
condition = lua_resume(global_state, coroutines[id]);
c_wait(condition);
// return thanks to c_coroutine scheduling
}
}
my_c_coroutinecreate(co) {
coroutines[numcoroutines++] = co;
c_spawn(&my_c_coroutine);
}
condition my_c_conditioncreate(conditionparms…) {
return condition;
}
-- lua side
function f()
…
coroutine.yield(my_c_conditioncreate(…))
…
end
Co1 = coroutine.create(f)
my_c_coroutinecreate(co1)
Co2 = coroutine.create(f)
my_c_coroutinecreate(co2)
Co3 = coroutine.create(f)
my_c_coroutinecreate(co3)
Co4 = coroutine.create(f)
my_c_coroutinecreate(co4)
regards,
Thierry