Lua c-api: Как определить сопрограмму / нить, участвующую в обратном вызове lua_pushcclosure?
Есть ли способ узнать, какой поток (сопрограмма), выполняющий сценарий Lua, является источником вызова lua_pushcclosure?
Чтобы управлять некоторыми вещами относительно потоков lua (отложенная пауза / возобновление или переменные приватных потоков), мне нужно идентифицировать поток, участвующий в обратном вызове. Я знаю, что могу получить индекс потока при его создании с помощью lua_gettop, но я не могу найти способ использовать его, чтобы он помог идентифицировать поток, когда из сценария Lua выдается вызов lua_pushcclosure.
Моя текущая система разрешает вложенные вызовы сценариев, поэтому сценарий может выполнять другие сценарии (каждый вызов вложенного сценария создает новый поток с тем же lua_state. Таким образом, lua_state используется для получения нескольких записей потоков в стеке.)
Я использую Lua 5.2
1 ответ
Если вы находитесь в функции C, которая была вызвана из Lua, и вы хотите знать, в каком потоке вы находитесь... просто вызовите lua_pushthread(L)
,