std::condition_variable::notify_one
From cppreference.com
< cpp | thread | condition variable
void notify_one(); |
(since C++11) | |
If any thread is waiting on *this, unblocks one of the waiting threads.
Contents |
[edit] Parameters
(none)
[edit] Return value
(none)
[edit] Exceptions
[edit] Example
#include <iostream> #include <condition_variable> #include <thread> #include <chrono> std::condition_variable cv; std::mutex cv_m; int i = 0; void waits() { std::unique_lock<std::mutex> lk(cv_m); std::cerr << "Waiting... \n"; cv.wait(lk, [](){return i == 1;}); std::cerr << "...finished waiting. i == 1\n"; } void signals() { std::this_thread::sleep_for(std::chrono::seconds(1)); std::cerr << "Notifying...\n"; cv.notify_one(); std::this_thread::sleep_for(std::chrono::seconds(1)); i = 1; std::cerr << "Notifying again...\n"; cv.notify_one(); } int main() { std::thread t1(waits), t2(signals); t1.join(); t2.join(); }
Output:
Waiting... Notifying... Notifying again... ...finished waiting. i == 1
[edit] See also
notifies all waiting threads (public member function) |