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).

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]