Пробуждение notify_one в C++
Метод notify_one будит один поток,
заблокированный на std::condition_variable.
Рабочий поток дождется сигнала и выведет слово:
#include <condition_variable>
#include <iostream>
#include <mutex>
#include <thread>
int main() {
std::mutex mx;
std::condition_variable cv;
bool ping = false;
std::thread worker([&]() {
std::unique_lock<std::mutex> lock(mx);
cv.wait(lock, [&]() { return ping; });
std::cout << "one\n";
});
{
std::lock_guard<std::mutex> lock(mx);
ping = true;
}
cv.notify_one();
worker.join();
return 0;
}
Один поток ждет на condition_variable. Главный меняет bool под мьютексом и вызывает notify_one.