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

时间:2012-09-08 04:31:13

标签: c++ c lua lua-5.2

有没有办法知道执行Lua脚本的哪个线程(协同程序)位于lua_pushcclosure调用的原点?

为了管理相对于lua线程(延迟暂停/恢复或私有线程变量)的一些东西,我需要识别回调中涉及的线程。我知道我可以通过使用lua_gettop来创建线程索引,但我找不到使用它的方法,所以当从Lua脚本发出lua_pushcclosure调用时,它有助于识别线程。

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

我正在使用Lua 5.2

1 个答案:

答案 0 :(得分:3)

如果您使用的是从Lua调用过的C函数,并且您想知道自己所处的线程...只需调用lua_pushthread(L)