首页主机资讯C++ std::mutex和条件变量如何配合使用

C++ std::mutex和条件变量如何配合使用

时间2024-06-26 19:02:03发布访客分类主机资讯浏览1511
导读:在C++中,std::mutex和条件变量通常一起使用来实现线程之间的同步。条件变量用于在一定条件下通知等待的线程,而std::mutex用于保护共享数据以避免竞争条件。 以下是std::mutex和条件变量如何配合使用的基本示例: #in...

在C++中,std::mutex和条件变量通常一起使用来实现线程之间的同步。条件变量用于在一定条件下通知等待的线程,而std::mutex用于保护共享数据以避免竞争条件。

以下是std::mutex和条件变量如何配合使用的基本示例:

#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>
     lock(mtx);

    // 等待条件变量通知
    cv.wait(lock, []{
     return ready;
 }
    );
    
    
    // do some work
    std::cout <
    <
     "Worker thread is doing some work" <
    <
     std::endl;

}


int main() {
    
    std::thread t(worker_thread);
    
    
    // do some work
    std::this_thread::sleep_for(std::chrono::seconds(2));

    
    // 通知条件变量
    {
    
        std::lock_guard<
    std::mutex>
     lock(mtx);
    
        ready = true;

    }
    
    cv.notify_one();
    
    
    t.join();
    
    
    return 0;

}
    

在上面的示例中,worker_thread函数在等待条件变量通知时会被阻塞,直到在主线程中通过notify_one()通知条件变量。在主线程中,先设置ready为true,然后通过通知条件变量来触发worker_thread的执行。

使用std::mutex和条件变量可以很好地实现线程之间的同步和通信,确保线程在适当的时机执行和协作。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: C++ std::mutex和条件变量如何配合使用
本文地址: https://pptw.com/jishu/684311.html
为什么C++ std::mutex不能复制 C++ std::mutex在哪些场景下必不可缺少

游客 回复需填写必要信息