当前位置: 首页 > wzjs >正文

什么手机可做网站怎么提交公司网站

什么手机可做网站,怎么提交公司网站,8网站建设做网站,网站建设 熊掌号概述 std::condition_variable 是 C 标准库中用于线程间通信的同步原语。它允许一个或多个线程等待某个条件为真。通常与 std::mutex 一起使用,std::condition_variable 提供了两种主要的等待方式:wait 和 wait_for。 使用说明 初始化:std…

概述

std::condition_variable 是 C++ 标准库中用于线程间通信的同步原语。它允许一个或多个线程等待某个条件为真。通常与 std::mutex 一起使用,std::condition_variable 提供了两种主要的等待方式:waitwait_for

使用说明

  1. 初始化std::condition_variable 通常作为类的成员变量进行初始化。
  2. 等待:使用 waitwait_for 方法来阻塞当前线程,直到条件满足。
  3. 通知:使用 notify_onenotify_all 方法来唤醒等待的线程。

关键方法

  • void wait(std::unique_lock<std::mutex>& lock);

    • 使当前线程阻塞,直到条件变量被通知。
    • 调用 wait 之前,必须先对 std::mutex 进行上锁,并将锁对象传递给 wait 方法。
    • 当线程被唤醒时,它会自动重新获取锁。
  • template<class Rep, class Period> std::cv_status wait_for(std::unique_lock<std::mutex>& lock, const std::chrono::duration<Rep, Period>& rel_time);

    • 使当前线程阻塞指定的时间长度,或者直到条件变量被通知。
    • 如果在指定的时间内没有被通知,则返回 std::cv_status::timeout
  • void notify_one();

    • 唤醒一个正在等待的线程。
    • 如果有多个线程在等待,选择哪个线程被唤醒是不可预测的。
  • void notify_all();

    • 唤醒所有正在等待的线程。

使用示例

下面是一个简单的示例,展示了如何使用 std::condition_variable 来实现线程间的同步。这个例子中,主线程等待子线程完成某个任务。

#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>class Task {
public:void execute() {std::unique_lock<std::mutex> lock(mutex_);std::cout << "模拟一个耗时任务,开始!" << std::endl;std::this_thread::sleep_for(std::chrono::seconds(2));std::cout << "模拟一个耗时任务,结束!" << std::endl;status_ = true;// 通知等待的线程cv_.notify_one();}void waitUntilCompleted() {std::unique_lock<std::mutex> lock(mutex_);std::cout << "使用 wait 来等待任务完成!" << std::endl;cv_.wait(lock, [this]{ return status_; });// 当 wait 返回时,说明 status_ 为 truestd::cout << "任务已完成!" << std::endl;}private:std::mutex mutex_;std::condition_variable cv_;bool status_ = false;
};int main() {Task task;// 启动一个新线程执行任务std::thread worker([&task](){ task.execute(); });// 主线程等待任务完成task.waitUntilCompleted();std::cout << "等待子线程结束!" << std::endl;worker.join();std::cout << "子线程已结束!" << std::endl;return 0;
}

说明

  • execute 方法:模拟了一个耗时任务。在任务完成后,设置 status_true,并使用 notify_one 通知等待的线程。
  • waitUntilCompleted 方法:使用 wait 方法来等待 status_ 变为 truewait 方法的第一个参数是一个 std::unique_lock<std::mutex>,第二个参数是一个 lambda 表达式,该表达式返回一个布尔值,表示等待的条件。
  • main 函数:创建了一个 Task 对象,并启动了一个子线程来执行任务。主线程调用 waitUntilCompleted 方法来等待任务完成,然后等待子线程结束。

在这个示例中,std::condition_variable 被用来实现在任务完成时通知等待的线程。这样可以有效地避免 busy-waiting(忙等待),提高程序的性能和响应性。

执行结果

在这里插入图片描述

http://www.dtcms.com/wzjs/791473.html

相关文章:

  • 网站开发市场调查中国经济网
  • 开封网站建设优化广州建筑设计公司有哪些
  • 网站建设合作协议书上海公共服务平台官网
  • 中交建设集团网站分公司导购网站的seo怎么做
  • 网站公司建站网站推广岗位的要求
  • 义乌专业做网站网站建设首先
  • 网站建设三折页做网站工作室
  • 网站建设西安网站安全评估怎么做
  • 网站权重不够高 导致网站建设预算表样本
  • 本网站正在建设图片做环球资源网站有没有效果
  • 权威的网站制作天津网站营销seo电话
  • 搞笑网站源代码南通公司建站模板
  • 码云pages做静态网站移动端首页尺寸
  • 做网站用什么服务器会比较好网站建设 技术团队介绍
  • 遵义营商环境建设局网站手机免费制作网站模板免费下载
  • 网站怎么icp备案做原创音乐的网站
  • 徐州市中宇建设工程有限公司网站深圳网络推广系统
  • 中国空间站组合体网站建设补助
  • 东圃网站建设网站鼠标悬停动态效果代码
  • 故宫博物院官网网站咋做的有域名后续怎么做网站
  • 数据库网站 建设费用潍坊网站建设报价
  • 站长音效网站网络营销推广制作
  • ii6创建网站优购物官方网站女鞋
  • 企业网站 漏洞网站建设毕业设计选题
  • 360网站建设服务器企业网站设计解决方案
  • 网站 内页中高端网站设计排名
  • 网站建设公司如何生存北京网页制作公司物美价廉
  • vps做网站怎么加速临清网站制作公司
  • 建网站一定要备案吗网站推广服务网站连锁
  • 用h5做网站是什么意思服务器迁移对做网站的影响