Как получить данные из потока в основном

У меня есть функция

HRESULT query()
{
    int a = 1200;
    while (a != 0)
    {
        --a;
        std::cout << a << std::endl;
    }
    return S_OK;
}

Вызываю ее в основном потоке WinAPI

.......

HRESULT a;

.......

WM_CREATE:
{
    th = make_unique<thread>([&](){
        a = query();
        cout << endl << endl << a;
    });
    break;
}

Я хочу в WM_PAINT рисовать прогрессбар во время исполнения функции (пока не получу в результате S_OK), как мне получить данные из потока? Если я буду через while проверять, тогда встанет весь поток. Есть еще идея: создать переменную и получить в нее время, после каждые 5 секунд проверять результат той переменной в основном таймере (PeekMessage), а после отправлять на перерисовку. Целесообразно ли это?


Ответы (0 шт):