现在的位置: 首页 > 操作系统 > 正文

C++并发编程等待与唤醒

2020年02月13日 操作系统 ⁄ 共 1329字 ⁄ 字号 评论关闭

C++并发编程 等待与唤醒

条件变量

条件变量, 包括(std::condition_variable 和 std::condition_variable_any)  定义在 condition_variable 头文件中, 它们都需要与互斥量(作为同步工具)一起才能工作.

  std::condition_variable 允许阻塞一个线程, 直到条件达成.

成员函数

void wait(std::unique_lock<std::mutex>& lock); 等待, 通过 notify_one(), notify_all()或伪唤醒结束等待void wait(std::unique_lock<std::mutex>& lock, Predicate pred); 等待, 通过 notify_one(), notify_all()被调用, 并且谓词为 true 时结束等待.pred 谓词必须是合法的, 并且需要返回一个值, 这个值可以和bool互相转化cv_status wait_until(std::unique_lock<std::mutex>& lock, const std::chrono::time_point<Clock, Duration>& absolute_time);调用 notify_one(), notify_all(), 超时或线程伪唤醒时, 结束等待.返回值标识了是否超时.bool wait_until(std::unique_lock<std::mutex>& lock, const std::chrono::time_point<Clock, Duration>& absolute_time, Predicate pred);等待, 通过 notify_one(), notify_all(), 超时, 线程伪唤醒, 并且谓词为 true 时结束等待.cv_status wait_for(std::unique_lock<std::mutex>& lock, const std::chrono::duration<Rep, Period>& relative_time);调用 notify_one(), notify_all(), 指定时间内达成条件或线程伪唤醒时,结束等待bool wait_for(std::unique_lock<std::mutex>& lock, const std::chrono::duration<Rep, Period>& relative_time, Predicate pred);调用 notify_one(), notify_all(), 指定时间内达成条件或线程伪唤醒时,并且谓词为 true 时结束等待.void notify_one() noexcept; 唤醒一个等待当前 std::condition_variable 实例的线程void notify_all() noexcept; 唤醒所有等待当前 std::condition_variable 实例的线程

一个线程安全的队列设计:

以上就上有关C++并发编程等待与唤醒的相关介绍,要了解更多C++并发编程,C++并发编程 等待与唤醒,编程,Linux编程,Linux Shell,Android,Android教程,JAVA,C语言,Python,HTML5内容请登录学步园。

抱歉!评论已关闭.