我有一个C ++ dll应用程序,它是从嵌入在可执行文件中的Lua环境调用的。我需要dll“main”线程来生成一个线程来做它的事情,并让主线程死去继续执行启动dll的Lua脚本。如果我使用join(),主线程不返回Lua,如果我没有主线程终止并杀死儿子。 它甚至可能吗? 感谢您帮助这个菜鸟:)
编辑:看起来像我正在寻找的分离()
void startThread() {
initCommunication();
}
extern "C" __declspec(dllexport) int luaopen_myDLL(lua_State *L){
// register Lua functions
static const luaL_Reg functs [] = {
{"registerOffsetMap", cpp_registerOffsetMap},
{"registerLuaFile", cpp_registerLuaFile},
...
{NULL,NULL}
};
luaL_register(L,"myDLL", functs);
LuaGlobal = L;
if (active) {
return 0;
}
// run installed modules
...
boost::thread thrd(startThread);
thrd.detach();
return 0;
}
Lua脚本调用需要“myDLL”并运行luaopen_myDLL函数。 这会在dll中注册一些函数,所以我可以从Lua调用它们,然后在它自己的线程上运行initComunication()函数,这样原来的Lua脚本就可以继续运行了。
分离似乎不起作用。