взгляните на следующий вызов API lua. Я думаю, что это именно то, что вам нужно.
lua_State *lua_newthread (lua_State *L);
Это создает новый поток, помещает его в стек и возвращает указатель на lua_State
, который представляет этот новый поток. Новый поток, возвращаемый этой функцией, совместно использует с исходным потоком свою глобальную среду, но имеет независимый стек выполнения.
Нет явной функции, чтобы закрыть или уничтожить поток. Потоки подлежат сборке мусора, как и любой объект Lua.