Lua c-api:如何识别在lua_pushcclosure回调中涉及的协程/线程?

有没有办法知道执行 Lua 脚本的哪个线程(协程)是 lua_pushcclosure 调用的来源?

为了管理与 Lua 线程相关的某些东西(延迟暂停/恢复,或私有线程变量),我需要识别回调所涉及的线程。我知道我可以在创建线程时使用 lua_gettop 获取线程索引,但我找不到一种方法来使用它,以便在 Lua 脚本发出 lua_pushcclosure 调用时帮助识别线程。

我的当前系统允许嵌套脚本调用,因此脚本可以执行其他脚本(每个嵌套脚本调用创建一个具有相同 lua_state 的新线程。因此,用于获取多个线程条目的 lua_state 在堆栈中)

我正在使用 Lua 5.2

点赞
用户734069
用户734069

如果你在一个被 Lua 调用的 C 函数中,并且想知道当前线程是哪个… 只需要调用 lua_pushthread(L)

2012-09-08 15:00:07