std::condition_variable — blocks a thread until notified. Used for producer-consumer patterns.
1#include <mutex>2#include <condition_variable>3#include <queue>45std::queue<int> tasks;6std::mutex mtx;7std::condition_variable cv;89// Producer10void producer() {11 for (int i = 0; i < 10; i++) {12 {13 std::lock_guard<std::mutex> lock(mtx);14 tasks.push(i);15 }16 cv.notify_one();17 }18}1920// Consumer21void consumer() {22 while (true) {23 std::unique_lock<std::mutex> lock(mtx);24 cv.wait(lock, [] { return !tasks.empty(); });25 int task = tasks.front();26 tasks.pop();27 lock.unlock();28 // Process task29 }30}
Key methods: