holyya.com
2025-09-04 23:12:09 Thursday
登录
文章检索 我的文章 写文章
C++11中条件变量的使用方法
2023-07-14 20:52:23 深夜i     --     --
C++11 条件变量 使用方法

C++11中引入了新的线程库,其中包括了条件变量的使用方法。条件变量用于线程之间的同步,可以让线程等待某个条件的发生,而不会一直占用CPU资源。

条件变量的使用需要以上三个步骤:

1.定义条件变量

C++11中可以使用std::condition_variable类来定义条件变量。


std::condition_variable cv;

2.定义互斥量

条件变量的等待需要和互斥量一起使用。在等待条件变量时,线程会释放掉相应的互斥量。当条件变量发生变化时,线程会尝试重新获取互斥量。


std::mutex mtx;

3.等待条件变量

使用std::unique_lock类对互斥量进行上锁,并等待条件变量。当条件变量发生变化时,线程会重新获取互斥量,并执行相应的操作。


std::unique_lock<std::mutex> lck(mtx);

cv.wait(lck);

上述代码中的lck对象会在等待条件变量时对互斥量进行上锁,并在条件变量发生变化时自动解锁。

4.通知条件变量

当条件变量发生变化时,需要使用notify_one或notify_all方法通知等待该条件变量的线程。


cv.notify_one();

如果只有一个线程在等待该条件变量,则使用notify_one方法通知该线程;如果有多个线程在等待该条件变量,则使用notify_all方法通知所有等待该条件变量的线程。

总结:C++11中的条件变量是线程之间同步的一种手段,使用条件变量需要先定义条件变量和互斥量,然后对互斥量进行上锁并等待条件变量的发生。当条件变量发生变化时,使用notify_one或notify_all方法通知等待该条件变量的线程。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复