将函数从全局状态推送到Lua线程

时间:2011-12-25 02:17:42

标签: api lua coroutine

我有一个名为lua_tcall的C ++函数,它扩展了lua_pcall的功能。当调用lua_tcall时,它期望堆栈的最高值是Lua函数,就像lua_pcall那样。我希望lua_tcall能够创建一个线程,并使用全局堆栈顶部的函数作为线程的函数。如何将函数从全局状态推送到我从lua_newthread返回的lua_State *?

2 个答案:

答案 0 :(得分:2)

要将函数从一个lua_State传递到另一个,您必须使用全局两种状态将对象存储为中介。您可以使用全局变量或注册表项。

答案 1 :(得分:2)

要在状态之间传输值,lua_xmove优于使用共享中介。