Итак, у меня есть очень простой Lua-скрипт:
return coroutine.create(function () coroutine.yield(1) end)
А затем в C я запускаю его и получаю возвращаемое значение
lua_State* l = luaL_newstate();
if(luaL_dostring(l, script) == LUA_OK) {
lua_State* co = lua_tothread(l, lua_gettop(l));
lua_pop(l, 1);
}
Позже код C передаст указатель co
обратно в Lua (с lua_pushthread
) и запустит coroutine.resume(co)
.
Я хотел бы знать, будет ли Lua тем временем выполнять GC объекта сопрограммы, делая указатель co
в C недействительным? Если да, то что я могу сделать, чтобы предотвратить это?