Краш при использовании потока

Страницы: 1
RSS
Краш при использовании потока
 
Код на 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
Читают тему
Наверх