【发布时间】:2014-01-29 11:14:06
【问题描述】:
我正在为一个大问题(但可能很简单)而烦恼(我没有)。
我正在使用 QT 开发服务器应用程序。 此服务器将接受 TCP 连接并与特定和专有的以太网产品对话。
每次在此服务器上调用产品时,都会使用此新 TCP 连接创建一个新线程,并以一些“常见”请求开始对话。
在此对话框的某个步骤,线程需要运行 Lua 脚本以继续该过程:不是使用通用过程 - 而是针对每个产品的特定过程。
这是我的问题:
当我运行 Lua 脚本时,我需要使用 Thread 类(当前线程)的方法。由于可以在 Lua 脚本中使用的 C 函数的 Extern "C" 声明,我无法调用当前线程的方法,因为我看不到如何编程(或背后的原理)这个交换的结构: - 线程有 N 种方法在 IP 上发送数据,具体取决于协议(我们将此方法称为 mythread::CClass_fn_X()) - 为 Lua 注册的函数 C 将被调用 LUA_FN_X()。这只是一个使用 Lua 计算参数调用 CClass_fn_X() 的网关)
如果在 LUA_FN_X() 中我想做一个“this->CClass_fn_X()”,我不能,因为 C LUA 函数没有引用线程的“this”。
过去几天我尝试了各种方法,但找不到解决问题的好方法(或简单的任何解决方案)。
请帮帮我,我不需要代码,只需要这样做的原则。
另外,Lua 解释器线程安全吗?我可以在不同的线程中单独运行 Lua 脚本吗?
【问题讨论】:
标签: c++ multithreading qt lua