我的问题是:如何使用 Lua 堆栈 (lua_State) 实现线程本地存储之类的东西?将存储在 lua 状态中的一些值,可供 lua 脚本和 C API 访问。
最佳答案
有几种方法可以做到这一点。我写了一篇关于它的论文;这是 Lua Programming Gems 中的第 1 章
最简单的方法可能是在注册表中创建一个表,其键是 lua_States,值是您的线程本地数据。使表在键中变弱,以便在收集线程时释放线程本地数据。
如果您的线程本地数据仅供您的 C 库使用并从中访问,您可以改为在库函数的共享上值中保留一个类似的表。使用 luaL_setfuncs向共享上值表注册函数。使用此技术的优点是线程本地数据对您的 C 库是私有(private)的。
关于c - Lua,实现 C API 可访问的线程本地存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14770407/