我的问题是:如何使用 Lua 堆栈(lua_State)实现线程本地存储之类的东西?一些将存储在 lua 状态中的值,可由 lua 脚本和 C API 访问。
问问题
503 次
1 回答
2
有几种方法可以做到这一点。我写了一篇关于它的论文;这是Lua Programming Gems的第 1 章
最简单的方法可能是在注册表中创建一个表,其键是 lua_States,值是您的线程本地数据。在键中使表变弱,以便在收集线程时释放线程本地数据。
如果您的线程本地数据只需要并从您的 C 库访问,您可以改为在库函数的共享上值中保留一个类似的表。使用luaL_setfuncs将函数注册到共享上值表。使用这种技术的优点是线程本地数据对您的 C 库是私有的。
于 2013-02-09T01:37:05.707 回答