【发布时间】:2012-01-11 08:41:21
【问题描述】:
我正在使用 VS2008、lua 5.1 和 luabind 0.9.1。
从 C++ 调用 Lua 函数就可以了。
如果有多个线程,每个线程都调用Lua函数,这种情况有问题吗?只有 ONE Lua 状态。
在那种情况下,我应该有更多的 Lua 状态吗?哪一种比较常见?
【问题讨论】:
-
一些快速的 Google 搜索似乎表明 Lua VM 不是线程安全的,所以我建议每个线程使用一个状态。
-
但是,如果它只是调用 Lua 函数呢?调用Lua函数可以改变它的状态?
-
我猜所有的 VM 寄存器和调用堆栈和其他重要变量都存储在状态中,如果两个线程同时使用状态,这将是灾难的根源。要么使用例如保护 Lua 函数的调用。互斥体,或使用不同的状态。