
- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <multimap>
- C++ Library - <queue>
- C++ Library - <priority_queue>
- C++ Library - <set>
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- The C++ Advanced Library
- C++ Library - <any>
- C++ Library - <barrier>
- C++ Library - <bit>
- C++ Library - <chrono>
- C++ Library - <cinttypes>
- C++ Library - <clocale>
- C++ Library - <condition_variable>
- C++ Library - <coroutine>
- C++ Library - <cstdlib>
- C++ Library - <cstring>
- C++ Library - <cuchar>
- C++ Library - <charconv>
- C++ Library - <cfenv>
- C++ Library - <cmath>
- C++ Library - <ccomplex>
- C++ Library - <expected>
- C++ Library - <format>
- C++ Library - <future>
- C++ Library - <flat_set>
- C++ Library - <flat_map>
- C++ Library - <filesystem>
- C++ Library - <generator>
- C++ Library - <initializer_list>
- C++ Library - <latch>
- C++ Library - <memory_resource>
- C++ Library - <mutex>
- C++ Library - <mdspan>
- C++ Library - <optional>
- C++ Library - <print>
- C++ Library - <ratio>
- C++ Library - <scoped_allocator>
- C++ Library - <semaphore>
- C++ Library - <source_location>
- C++ Library - <span>
- C++ Library - <spanstream>
- C++ Library - <stacktrace>
- C++ Library - <stop_token>
- C++ Library - <syncstream>
- C++ Library - <system_error>
- C++ Library - <string_view>
- C++ Library - <stdatomic>
- C++ Library - <variant>
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
C++ condition_variable::notify_one() Function
The std::condition_variable::notify_one() function in C++, is used to unblock one thread that is waiting on a condition variable. condition variables are used to synchronize threads by allowing them to wait for a specific condition to be met.
When a thread calls wait() on a condition variable, it is put into a blocked state until another thread notifies it that the condition is changed. This function is called by notifying thread to wake up single waiting thread, allowing it to continue execution.
Syntax
Following is the syntax for std::condition_variable::notify_one() function.
void notify_one() 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 a waits until ready is set to true by the b, which then signals the a.
#include <iostream> #include <thread> #include <mutex> #include <condition_variable> std::mutex x; std::condition_variable y; bool z = false; void a() { std::unique_lock < std::mutex > lock(x); y.wait(lock, [] { return z; }); std::cout << "Notified to start work.\n"; } void b() { std::this_thread::sleep_for(std::chrono::milliseconds(500)); { std::lock_guard < std::mutex > lock(x); z = true; } std::cout << "Set The Condition.\n"; y.notify_one(); } int main() { std::thread x1(a); std::thread x2(b); x1.join(); x2.join(); return 0; }
Output
Output of the above code is as follows −
Set The Condition. Notified to start work.