c - Lua,实现 C API 可访问的线程本地存储

标签 c multithreading lua

我的问题是:如何使用 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/

相关文章:

c - 如何将 10 位值传递给两个寄存器?

python - Python 中 sqlite 的多次读取

java - 如何理解 - 访问变量时不需要出于任何其他原因进行锁定

lua - Lua 中的多个返回值

c - 如何在ubuntu中为c语言安装lprotobuf-c

C 输入的 char 返回不同的 char

c - 如何通过 xcb RandR 扩展获得 RandR 输出的分辨率?

asp.net - 在 ASP.NET WebService 中启动一个线程

c++ - 使用具有最少 C++/SWIG/Lua 代码的共享 dll 的链接错误

lua - 当你有一个函数作为参数时会发生什么?