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

   2024-10-08 6370
核心提示:在C++中,std::mutex和条件变量通常一起使用来实现线程之间的同步。条件变量用于在一定条件下通知等待的线程,而std::mutex用于

在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和条件变量可以很好地实现线程之间的同步和通信,确保线程在适当的时机执行和协作。

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

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