如何正确使用c++ condition

   2024-10-05 7820
核心提示:C++中的条件变量(condition variable)是一种线程同步机制,用于在多线程编程中控制线程的执行顺序和通信。正确使用条件变量需

C++中的条件变量(condition variable)是一种线程同步机制,用于在多线程编程中控制线程的执行顺序和通信。正确使用条件变量需要遵循以下步骤:

创建条件变量对象:使用std::condition_variable类创建条件变量对象。

创建互斥量对象:使用std::mutex类创建互斥量对象,用于保护共享数据。

在需要等待某个条件的线程中,通过std::unique_lockstd::mutex对象锁住互斥量。

调用std::condition_variable的wait()方法等待条件的发生,同时释放互斥量,使得其他线程可以访问共享数据。

在满足条件时,通过notify_one()或notify_all()方法通知等待的线程。

以下是一个简单的示例代码:

#include <iostream>#include <thread>#include <mutex>#include <condition_variable>std::mutex mtx;std::condition_variable cv;bool ready = false;void worker_thread(){    std::unique_lock<std::mutex> lck(mtx);    cv.wait(lck, [] { return ready; });    std::cout << "Worker thread is processing data" << std::endl;}int main(){    std::thread worker(worker_thread);    {        std::lock_guard<std::mutex> lck(mtx);        ready = true;    }    cv.notify_one();    worker.join();    return 0;}

在上述示例中,worker_thread函数通过条件变量cv等待ready变量为true,主线程在修改ready后通过notify_one()通知worker_thread线程。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号