yiv1 (Автор тем)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Краш при использовании потока
 
Код на c++ должен получать данные из другого процесса через filemapping, синхронизация через события.

Не могу понять почему quik закрывается после манипуляций со стейтом созданным через lua_newthread
Код
static int sample(lua_State *L) {
    -- ...

    lua_State *NL = lua_newthread(L);

    tref = luaL_ref(L, LUA_REGISTRYINDEX);

    subscriberThread = std::thread([NL] {
        for (;;) {
            WaitForSingleObject(subscriberEventHandle, INFINITE);

            -- если закомментировать три строки ниже, то ошибки не будет
            lua_getglobal(NL, "message");
            lua_pushstring(NL, "from thread");
            lua_call(NL, 1, 0);

            ResetEvent(subscriberEventHandle);
        }

        luaL_unref(NL, LUA_REGISTRYINDEX, tref);
        tref = LUA_NOREF;
    });

    NL = nullptr;

    return 0;
}
Краш quik происходит после остановки lua-скрипта.

Подскажите, пожалуйста, где ошибка.
Страницы: 1
Наверх