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

Ожидание условия std::condition_variable в C++

Поток до сигнала notify блокирует std::condition_variable, если предикат еще ложен.

Рабочий поток подождет флаг под мьютексом, главный поднимет флаг и разбудит его:

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

Один поток ждет std::condition_variable с предикатом на bool. Главный ставит флаг и делает notify_one.

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