【发布时间】:2021-04-16 21:32:19
【问题描述】:
我在 C 主机中嵌入了 Lua。而且我有几个用 Lua 注册的 C 函数。
当我调用 Lua 然后 Lua 调用我的 C 函数时,有什么方法可以将值从“外部”C 代码传递到“内部”C 代码?
具体的问题是我有一个 HTTP 请求指针,我需要从回调函数中访问它,由于这可能是多线程代码,我宁愿不将它存储在全局变量中。
【问题讨论】:
我在 C 主机中嵌入了 Lua。而且我有几个用 Lua 注册的 C 函数。
当我调用 Lua 然后 Lua 调用我的 C 函数时,有什么方法可以将值从“外部”C 代码传递到“内部”C 代码?
具体的问题是我有一个 HTTP 请求指针,我需要从回调函数中访问它,由于这可能是多线程代码,我宁愿不将它存储在全局变量中。
【问题讨论】:
当您的“外部”C 代码调用 Lua 时,将 HTTP 请求指针作为轻量级用户数据参数传递。在 Lua 中,将其视为一个不透明的值,您再次将其作为参数传递给“内部”C 回调。然后让您的“内部”C 代码读取它并将其转换回正确的类型。
顺便说一句,Lua 本身不是线程安全的,所以如果您的应用程序是多线程的,请注意这一点。
【讨论】: