【发布时间】:2016-02-09 11:03:51
【问题描述】:
传递给 Lua 以便 Lua 可以调用本机函数的 C 函数是静态函数,因此与对象实例无关。
在我的应用程序中,我有多个会话。每个会话在自己的线程上运行,有自己的数据和脚本,会话 N 的脚本必须能够访问该会话 N 的数据。
问题在于,当您注册一个可从 Lua 调用的本机 C 函数时,我无法传递会话对象的实例以使其在静态 Lua 函数中可用。
一种可能是将会话实例存储到一个静态变量中,该变量可以从静态 C 函数调用(从 Lua 调用),但这看起来很脏,并且需要同步,这可能会导致某些脚本挂起。
第二种可能是创建一个表示会话的 Lua 对象并在其上调用成员方法,以便在我的 C 函数中,我可以访问表示会话的 Lua 对象(“this”)和检索此对象表示的实际本机会话实例。但我不知道该怎么做。
有没有办法在 Lua 中创建表示本地对象实例的 Lua 对象,以便本地 Lua 函数可以访问该本地对象实例?
【问题讨论】:
-
简单提示:“Lua”是一个名称,而不是首字母缩略词。这就是为什么它写成“Lua”,而不是“LUA”;)更多信息,请参阅lua.org/about.html#name :)