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内容请登录学步园。