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

网站续费贵是重新做个好还是续费wordpress最漂亮的主题

网站续费贵是重新做个好还是续费,wordpress最漂亮的主题,电脑网站建设规划,网站定做公司一. std::condition_variable是什么? std::condition_variable 是 C 标准库提供的一个线程同步的工具,用于实现线程间的条件变量等待和通知机制。 条件变量的发生通常与某个共享变量的状态改变相关。 在多线程编程中,条件变量通常和互斥锁…

一. std::condition_variable是什么?

std::condition_variable 是 C++ 标准库提供的一个线程同步的工具用于实现线程间的条件变量等待和通知机制。  条件变量的发生通常与某个共享变量的状态改变相关。  在多线程编程中,条件变量通常和互斥锁(std::mutex)一起使用,以避免死锁等问题。

二.用法

其常见用法如下:

1.定义std::condition_variable对象

std::condition_variable cv;

2.定义一个互斥锁对象

std::mutex m;

3.定义一个bool类型变量作为条件,通常与互斥锁一起使用

bool condition = false;

4.等待条件变量的通知

std::unique_lock<std::mutex> lk(m);
while (!condition) {cv.wait(lk); // 释放锁并等待通知
}
// 唤醒后继续执行

在等待时,std::condition_variable::wait()函数会自动释放互斥锁并将线程挂起,等待其他线程通过std::condition_variable::notify_one()std::condition_variable::notify_all()函数发出通知后唤醒线程。

唤醒后,std::unique_lock会重新锁定互斥锁,线程继续执行。

5.发送条件变量的通知

std::unique_lock<std::mutex> lk(m);
condition = true;
cv.notify_one(); // 发送通知

在发送通知时,必须先获取互斥锁,并修改条件变量的状态后才能发送通知。

需要注意的是: 

std::condition_variable一般需要和std::unique_lock一起使用,以避免竞态条件的出现。      

此外,线程在等待条件变量时,可能会出现虚假唤醒的情况,因此应该使用while循环检查条件变量的状态,而不是if语句。

三.示例

std::condition_variable的用法通常是与 std::unique_lock , std::mutex 一起使用。

可以通过以下步骤来使用 std::condition_variable :

  1. 创建std::mutex对象来保护共享资源。
  2. 创建std::condition_variable对象。
  3. 在需要等待共享资源的线程中,使用std::unique_lock, std::mutex 锁住共享资源,并使用std::condition_variable的wait()函数来阻塞线程等待通知。
  4. 在修改共享资源的线程中,修改共享资源,并使用std::condition_variable的notify_one()或notify_all()函数来通知等待的线程。
  5. 等待的线程被唤醒后,使用std::unique_lock, std::mutex 锁住共享资源,并检查共享资源是否已经被修改。

下面是一个使用std::condition_variable的示例:

#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>std::mutex m;
std::condition_variable cv;
bool ready = false;void worker_thread() {// 等待主线程的信号std::unique_lock<std::mutex> lock(m);while(!ready) {cv.wait(lock);}// 做一些工作std::cout << "Worker thread is working" << std::endl;
}int main() {// 创建工作线程std::thread worker(worker_thread);// 做一些工作std::cout << "Main thread is doing something" << std::endl;// 发送信号给工作线程{std::lock_guard<std::mutex> lock(m);ready = true;}cv.notify_one();// 等待工作线程完成worker.join();return 0;
}

运行后:

 

在这个例子中,主线程和工作线程共享了一个bool型变量ready,用来表示工作线程是否可以开始工作。主线程先打印一条消息,然后发送信号给工作线程。工作线程在启动后使用std::unique_lock, std::mutex 锁住共享资源ready,并在while循环中等待信号。一旦收到信号,工作线程就会解锁并开始工作。主线程等待工作线程完成后退出。

http://www.yayakq.cn/news/352547/

相关文章:

  • 网站需备案拼多多网站首页
  • 网站设计软件手机版京东云擎jae实战之wordpress发布
  • 学做ps的软件的网站有哪些内容唐山正规做网站的公司
  • 不允许访问网站洛阳疾控最新通告今天
  • 企业网站 建设 外包怎么推广广告
  • 室内设计在线网站dedecms_v5.6室内装饰设计公司企业网站模板.rar
  • 北京网络科技有限公司职场seo是什么意思
  • 搭建公司网站费用wordpress相册插件中文
  • 重庆专业网站建设公司排名北京seo优化服务
  • 魔方 网站wordpress主题 虎嗅网
  • 毕设做桌面软件还是网站中文编程软件
  • 网站建设提案怎么写长沙网站创建
  • 公司做网站要多久做网站设计需要什么软件
  • 鹤壁做网站推广wordpress半透明二次元
  • 怎么上传网站程序江苏多地发布最新情况
  • 如何将网站生成二维码wordpress 科技 主题
  • jsp网站开发技巧app优化网站开发
  • 烟台赶集网网站建设昆明调整高风险地区
  • 网站建设分为哪些内容wordpress在图片上加链接
  • 做电影下载网站赚钱dw设计个人网页
  • 做网站前期了解客户什么需求微信小程序可做购物网站吗
  • 什么网站可以找人做设计视频直播网站建设费用
  • 个人网站例子采购软件管理系统
  • lamp网站建设做网站还需要搜狗吗
  • 大连市营商环境建设局网站wordpress主题 v2ex
  • 建设网站的主要功能有哪些公司网页设计说明300
  • 做网站付多少定金贸易公司注册多少钱
  • 网站服务器代码放在哪营销策略分析包括哪些内容
  • 网页制作平台in淄博seo网站推广
  • 网站建设的代理中天建设哪里的