Ожидание условия 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.