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-скрипта.

Подскажите, пожалуйста, где ошибка.
Ускоряем скрипт и выкидываем sleep
 
Присоединяюсь.
Не нужно иметь много образования чтобы понять что техника с ожиданием событий эффективна.
А реализация не так сложна, как кажется на первый взгляд.
Страницы: 1
Наверх