Поясните за асинк плез

Карликовая свинья
Пользователь
Статус
Оффлайн
Регистрация
5 Ноя 2018
Сообщения
125
Реакции[?]
34
Поинты[?]
0
Вот есть список функций в векторе. Они выполняются с launch::async. Если они выполняются однократно в main, то всё заебись. Даже если содержат this_thread::sleep_for.

Но стоит запускать их в while(true), как сразу же получается хуйня. this_thread::sleep_for тормозит нахуй выполнение всех функций. Короч, как правильно запускать функции бесконечное количество раз, чтобы не было такой хуйни?

Вот пример кода:
C++:
vector<future<void>> functions;

while (true) {
    functions.push_back(async(launch::async, fun1));
    functions.push_back(async(launch::async, fun2));
    functions.push_back(async(launch::async, fun3));
    
    for (auto &e : functions) {
        e.get();
    }
    
    functions.clear();
}
 
вышел покурить
Пользователь
Статус
Оффлайн
Регистрация
17 Май 2018
Сообщения
387
Реакции[?]
100
Поинты[?]
0
Harrier Du Bois sleep же весь поток морозит, поэтому так. Попробуй каждый в отдельном потоке запустить и замораживай какой тебе нужно.
 
Карликовая свинья
Пользователь
Статус
Оффлайн
Регистрация
5 Ноя 2018
Сообщения
125
Реакции[?]
34
Поинты[?]
0
Harrier Du Bois sleep же весь поток морозит, поэтому так. Попробуй каждый в отдельном потоке запустить и замораживай какой тебе нужно.
Код:
vector<thread> functions;
while (true){
    functions.push_back(thread(fun1));
    functions.push_back(thread(fun2));
    functions.push_back(thread(fun3));
    functions.push_back(thread(fun4));
       
    for (thread &e : functions) {
    if(e.joinable())
        e.join();
    }

    functions.clear();
}
Та же хуйня
 
Сверху Снизу