
- C++ Library - Home
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- The C++ STL Library
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- The C++ Advanced Library
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ Library -
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
C++ condition_variable::wait() Function
The std::condition_variable::wait() function in C++, is used to block the thread until a specified condition is met. It is used in conjunction with the std::mutex and a std::unique_lock, ensuring the thread-safe execution. When the condition becomes true, the function reacquires the lock and resumes the execution.
Syntax
Following is the syntax for std::condition_variable::wait() function.
void notify_all() noexcept;void wait (unique_lock& lck); or void wait (unique_lock & lck, Predicate pred);
Parameters
- lck − It indicates a unique_lock object whose mutex object is currently locked by this thread.
- pred − It indicates a callable object or function that takes no arguments and returns a value that can be evaluated as a bool.
Return value
This function does not return anything.
Example 1
Let's look at the following example, where we are going to coordinates two threads.
#include#include #include #include std::mutex a; std::condition_variable b; bool turn = false; void x1() { std::unique_lock < std::mutex > lock(a); std::cout << "x1 waiting for its turn....\n"; b.wait(lock, [] { return turn; }); std::cout << "x1 proceeding...\n"; } void x2() { std::this_thread::sleep_for(std::chrono::seconds(1)); { std::lock_guard < std::mutex > lock(a); turn = true; std::cout << "x2 signals Thread 1's turn.\n"; } b.notify_one(); } int main() { std::thread a1(x1); std::thread a2(x2); a1.join(); a2.join(); return 0; }
Output
Output of the above code is as follows −
x1 waiting for its turn.... x2 signals Thread 1's turn. x1 proceeding...
cpp_condition_variable.htm
Advertisements