C++ condition_variable::notify_all() Function
The std::condition_variable::notify_all() function in C++, is a synchronization mechanism used in multithreading. It wakes up all threads waiting on the condition variable, allowing them to recheck the associated condition.
This function is used to when a shared resource state changes, making it ready for multiple waiting threads to proceed.
Syntax
Following is the syntax for std::condition_variable::notify_all() function.
void notify_all() noexcept;
Parameters
This function does not accepts any parameter.
Return value
This function does not return anything.
Example 1
Let's look at the following example, where we are going to consider the basic usage of the notify_all() function.
#include <iostream>
#include <thread>
#include <condition_variable>
#include <mutex>
std::condition_variable a;
std::mutex b;
bool ready = false;
void x(int id) {
std::unique_lock < std::mutex > lock(b);
a.wait(lock, [] {
return ready;
});
std::cout << id << " is proceeding.\n";
}
int main() {
std::thread x1(x, 1);
std::thread x2(x, 2);
std::this_thread::sleep_for(std::chrono::seconds(1));
{
std::lock_guard < std::mutex > lock(b);
ready = true;
}
a.notify_all();
x1.join();
x2.join();
return 0;
}
Output
Output of the above code is as follows −
2 is proceeding. 1 is proceeding.
cpp_condition_variable.htm
Advertisements