在线程中从C++调用Lua
Call Lua from C++ in threads
我在lua中有一个分类器模型来预测图像中一个人的性别,我需要从C++中调用它。我正在使用Lua C API。
我让它用于单个预测,我的意思是,在C++中,我调用dofile("script.loa"(,然后从磁盘加载模型,然后调用predict("image1.jpg"(我得到了结果。到目前为止还不错。
问题
问题是,我需要能够使用线程(同时调用多个线程(调用predict函数,因为foredict 我该如何实现这样的事情?或者这不可能/不可行?到目前为止,我已经尝试过了,但都没有成功: 谢谢你们的反馈。一旦无法实现我需要的东西,我就放弃了使用C API在Lua和C++之间进行通信的想法。 相反,我使用luasched运行一个带有Lua的服务器,每次需要进行预测时,我都会从C++创建一个到Lua套接字的新连接。 谨致问候,Sérgio更新
使用原始Lua通常无法实现您想要的。它是一个固有的单线程系统。虽然可以创建多个可以在独立线程上运行的独立lua_State
对象,但不能从两个不同的线程调用同一个lua_State
实例。
你可以试试Lua-Lanes,它表面上是Lua的线程框架。然而,它仍然需要单独的lua_State
;它所做的主要事情是(至少在理论上(提供一种在lua_State
之间共享数据的轻量级方式。
或者,您可以创建与您拥有的核心数量相等的进程数量。每个进程都必须独立加载模型,但加载模型的次数永远不会超过要使用的内核数量。但是通过这种方式,每个进程可以执行任意数量的predict
调用。您甚至可以从stdin中获取文件名,从而允许一些主进程将工作分配给单个进程。
- 调用 lua 函数的地址为 C/C++?
- C++-在没有自定义.lib文件的情况下从Lua C模块调用Lua函数
- 使用二进制参数调用LUA方法
- 从c++调用lua函数时,如何使表和变量值保持不变
- C++ - 调用 Lua 函数始终返回 0
- 从C++调用 lua 函数时"Error in error handling"
- Lua errorPANIC:调用 Lua API 时出现不受保护的错误(尝试调用 nil 值)
- 从C++中调用Lua函数
- 在 c++ 中调用 lua 函数(带有 require 'nn')
- 在C++中从表调用lua函数
- 在线程中从C++调用Lua
- 从缺少参数C++调用 Lua 函数
- tolua++从C++代码中调用Lua函数
- LuaPlus:如何从多线程C++中调用Lua函数
- 从不同的线程调用Lua函数(在C++中嵌入Lua)可以吗
- 从c++中调用Lua表函数w/ self in函数
- 从string_t调用Lua函数
- 当Lua被绑定到类中时,使用LuaBind在类中调用Lua函数
- 使用自定义数据作为函数参数调用lua回调
- 调用Lua:使用setField来指向自身