线程本地人在Lua

时间:2014-06-22 22:53:26

标签: c++ lua

在我的应用程序中,Lua脚本可以订阅来自客户端的某些事件。也可以让一个脚本订阅多个客户端。目前,我每次要调用脚本时都会设置全局“客户端”,以便脚本可以访问进行回调的客户端。我想要的是类似于C ++中的本地线程,这样我就可以为每个客户端创建一个新的Lua线程,并为该线程设置一次“Client”变量。如果客户端然后触发事件,它将只使用与之关联的线程。

TLDR:Lua中的变量是否可能只在特定的Lua线程中有效?

2 个答案:

答案 0 :(得分:6)

Lua没有内置的线程局部变量,但你可以为每个Lua线程使用一个单独的表来存储线程局部变量,并使用coroutine.running(或{{1)找出正在运行的线程在C)。然后用metatables使它更方便。类似的东西:

lua_pushthread

答案 1 :(得分:1)

Lua线程是来自单个母亲状态的子状态。所有全局变量都由这些Lua线程共享。

单独的Lua状态有单独的全局变量。