使用Boost / C ++生成一个线程并让父线程死掉

时间:2012-03-25 02:45:35

标签: c++ boost lua

我有一个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脚本就可以继续运行了。

分离似乎不起作用。

0 个答案:

没有答案