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