c++中wait的用法是什么

   2024-10-25 7250
核心提示:在C++中,wait通常用于线程同步机制中,用于使当前线程进入等待状态,直到条件满足或者被通知后才继续执行。wait通常与mutex和co

在C++中,wait通常用于线程同步机制中,用于使当前线程进入等待状态,直到条件满足或者被通知后才继续执行。wait通常与mutexcondition_variable一起使用。具体用法如下:

使用std::unique_lock<std::mutex>对象对mutex进行加锁。调用condition_variable对象的wait方法,将unique_lock对象传入,使当前线程进入等待状态。在另一个线程中满足某个条件时,调用condition_variable对象的notify_onenotify_all方法,通知等待的线程。等待的线程被通知后,wait方法返回,继续执行。

示例代码如下:

#include <iostream>#include <thread>#include <mutex>#include <condition_variable>std::mutex mtx;std::condition_variable cv;bool ready = false;void wait_func() {    std::unique_lock<std::mutex> lck(mtx);    while (!ready) {        cv.wait(lck);    }    std::cout << "Thread is notified." << std::endl;}void notify_func() {    std::this_thread::sleep_for(std::chrono::seconds(2));    {        std::lock_guard<std::mutex> lck(mtx);        ready = true;    }    cv.notify_one();}int main() {    std::thread t1(wait_func);    std::thread t2(notify_func);        t1.join();    t2.join();        return 0;}

在上面的示例中,wait_func线程等待ready状态变为truenotify_func线程在2秒后将ready状态设置为true并通知等待的线程。

 
举报打赏
 
更多>同类网点查询
推荐图文
推荐网点查询
点击排行

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