wait_for у std::condition_variable возвращает статус ожидания, если предикат не успел стать истинным за заданный интервал.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpThWf 556 of 696 menu
◀ ▶

Ожидание wait_for с предикатом в C++

Метод wait_for у std::condition_variable возвращает статус ожидания, если предикат не успел стать истинным за заданный интервал.

Поток подождет несколько миллисекунд, пока флаг не поднимут снаружи:

#include <chrono> #include <condition_variable> #include <iostream> #include <mutex> #include <thread> int main() { std::mutex mx; std::condition_variable cv; bool done = false; std::thread worker([&]() { std::unique_lock<std::mutex> lock(mx); cv.wait_for(lock, std::chrono::milliseconds(50), [&]() { return done; }); std::cout << "seen\n"; }); { std::lock_guard<std::mutex> lock(mx); done = true; } cv.notify_one(); worker.join(); return 0; }

Используйте wait_for на 20 мс с предикатом. Главный поднимает флаг и уведомляет поток.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить