阅读量:0
在C++中,条件变量是一种同步原语,用于在多线程环墫中协调线程的执行顺序。条件变量通常与互斥锁一起使用,以防止多个线程同时访问共享资源。
条件变量通过两个主要函数来实现:wait()和notify()。wait()函数会使当前线程等待,直到另一个线程调用notify()函数唤醒它。notify()函数用于唤醒等待在条件变量上的线程。
下面是一个简单的示例,演示了如何使用条件变量:
#include <iostream> #include <thread> #include <mutex> #include <condition_variable> std::mutex mtx; std::condition_variable cv; bool ready = false; void thread_function() { std::unique_lock<std::mutex> lck(mtx); while (!ready) { cv.wait(lck); } std::cout << "Thread is now running!" << std::endl; } int main() { std::thread t(thread_function); // Do some work { std::lock_guard<std::mutex> lck(mtx); ready = true; } cv.notify_one(); t.join(); return 0; }
在这个例子中,我们创建了一个线程并在其中调用thread_function()函数。在主线程中,我们改变了ready变量的值,并通过调用cv.notify_one()函数来唤醒在条件变量上等待的线程。
需要注意的是,条件变量的使用通常需要与互斥锁一起使用,以确保在等待和通知过程中的线程安全。