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

建设网站的总结做网站推广怎么找客户

建设网站的总结,做网站推广怎么找客户,用什么软件做公司网站,帮人做淘宝网站骗钱243、条件变量-生产消费者模型 条件变量是一种线程同步机制。当条件不满足时#xff0c;相关线程被一直阻塞#xff0c;直到某种条件出现#xff0c;这些线 程才会被唤醒。 C11 的条件变量提供了两个类#xff1a; condition_variable#xff1a;只支持与普通 mutex 搭配相关线程被一直阻塞直到某种条件出现这些线 程才会被唤醒。 C11 的条件变量提供了两个类 condition_variable只支持与普通 mutex 搭配效率更高。 condition_variable_any是一种通用的条件变量可以与任意 mutex 搭配包括用户自定义的锁 类型。 包含头文件condition_variable 一、condition_variable 类 主要成员函数 1condition_variable() 默认构造函数。 2condition_variable(const condition_variable )delete 禁止拷贝。 3condition_variable condition_variable::operator(const condition_variable )delete 禁止赋值。 4notify_one() 通知一个等待的线程。 5notify_all() 通知全部等待的线程。 6wait(unique_lockmutex lock) 阻塞当前线程直到通知到达。 7wait(unique_lockmutex lock,Pred pred) 循环的阻塞当前线程直到通知到达且谓词满足。 8wait_for(unique_lockmutex lock,时间长度) 9wait_for(unique_lockmutex lock,时间长度,Pred pred) 10wait_until(unique_lockmutex lock,时间点) 11wait_until(unique_lockmutex lock,时间点,Pred pred) 二、unique_lock 类 template class Mutex class unique_lock 是模板类模板参数为互斥锁类型。 unique_lock 和 lock_guard 都是管理锁的辅助类都是 RAII 风格在构造时获得锁在析构时释放 锁。它们的区别在于为了配合 condition_variableunique_lock 还有 lock()和 unlock()成员函数。 示例 1 #include iostream #include string #include thread // 线程类头文件。 #include mutex // 互斥锁类的头文件。 #include deque // deque 容器的头文件。 #include queue // queue 容器的头文件。 #include condition_variable // 条件变量的头文件。 using namespace std; class AA { mutex m_mutex; // 互斥锁。 condition_variable m_cond; // 条件变量。 queuestring, dequestring m_q; // 缓存队列底层容器用 deque。 public: void incache(int num) // 生产数据num 指定数据的个数。 { lock_guardmutex lock(m_mutex); // 申请加锁。 for (int ii0 ; iinum ; ii) { static int bh 1; // 超女编号。 string message to_string(bh) 号超女; // 拼接出一个数据。 m_q.push(message); // 把生产出来的数据入队。 } m_cond.notify_one(); // 唤醒一个被当前条件变量阻塞的线程。 } void outcache() // 消费者线程任务函数。 { while (true) { string message; { // 把互斥锁转换成 unique_lockmutex并申请加锁。 unique_lockmutex lock(m_mutex); while (m_q.empty()) // 如果队列空进入循环否则直接处理数据。必须用 循环不能用 if m_cond.wait(lock); // 等待生产者的唤醒信号。 // 数据元素出队。 message m_q.front(); m_q.pop(); } // 处理出队的数据把数据消费掉。 this_thread::sleep_for(chrono::milliseconds(1)); // 假设处理数据需要 1 毫秒。 cout 线程 this_thread::get_id() message endl; } } }; int main() { AA aa; thread t1(AA::outcache, aa); // 创建消费者线程 t1。 thread t2(AA::outcache, aa); // 创建消费者线程 t2。 thread t3(AA::outcache, aa); // 创建消费者线程 t3。 this_thread::sleep_for(chrono::seconds(2)); // 休眠 2 秒。 aa.incache(3); // 生产 3 个数据。 this_thread::sleep_for(chrono::seconds(3)); // 休眠 3 秒。 aa.incache(5); // 生产 5 个数据。 t1.join(); // 回收子线程的资源。 t2.join(); t3.join(); } 示例 2 #include iostream #include string #include thread // 线程类头文件。 #include mutex // 互斥锁类的头文件。 #include deque // deque 容器的头文件。 #include queue // queue 容器的头文件。 #include condition_variable // 条件变量的头文件。 using namespace std; class AA { mutex m_mutex; // 互斥锁。 condition_variable m_cond; // 条件变量。 queuestring, dequestring m_q; // 缓存队列底层容器用 deque。 public: void incache(int num) // 生产数据num 指定数据的个数。 { lock_guardmutex lock(m_mutex); // 申请加锁。 for (int ii0 ; iinum ; ii) { static int bh 1; // 超女编号。 string message to_string(bh) 号超女; // 拼接出一个数据。 m_q.push(message); // 把生产出来的数据入队。 } //m_cond.notify_one(); // 唤醒一个被当前条件变量阻塞的线程。 m_cond.notify_all(); // 唤醒全部被当前条件变量阻塞的线程。 } void outcache() { // 消费者线程任务函数。 while (true) { // 把互斥锁转换成 unique_lockmutex并申请加锁。 unique_lockmutex lock(m_mutex); // 条件变量虚假唤醒消费者线程被唤醒后缓存队列中没有数据。 //while (m_q.empty()) // 如果队列空进入循环否则直接处理数据。必须用循 环不能用 if // m_cond.wait(lock); // 1把互斥锁解开2阻塞等待被唤醒3给互斥 锁加锁。 m_cond.wait(lock, [this] { return !m_q.empty(); }); // 数据元素出队。 string message m_q.front(); m_q.pop(); cout 线程 this_thread::get_id() message endl; lock.unlock(); // 手工解锁。 // 处理出队的数据把数据消费掉。 this_thread::sleep_for(chrono::milliseconds(1)); // 假设处理数据需要 1 毫秒。 } } }; int main() { AA aa; thread t1(AA::outcache, aa); // 创建消费者线程 t1。 thread t2(AA::outcache, aa); // 创建消费者线程 t2。 thread t3(AA::outcache, aa); // 创建消费者线程 t3。 this_thread::sleep_for(chrono::seconds(2)); // 休眠 2 秒。 aa.incache(2); // 生产 2 个数据。 this_thread::sleep_for(chrono::seconds(3)); // 休眠 3 秒。 aa.incache(5); // 生产 5 个数据。 t1.join(); // 回收子线程的资源。 t2.join(); t3.join(); } 244、原子类型 atomic C11 提供了 atomicT模板类结构体用于支持原子类型模板参数可以是 bool、char、i nt、long、long long、指针类型不支持浮点类型和自定义数据类型。 原子操作由 CPU 指令提供支持它的性能比锁和消息传递更高并且不需要程序员处理加锁和释 放锁的问题支持修改、读取、交换、比较并交换等操作。 头文件#include atomic 构造函数 atomic() noexcept default; // 默认构造函数。 atomic(T val) noexcept; // 转换函数。 atomic(const atomic) delete; // 禁用拷贝构造函数。 赋值函数 atomic operator(const atomic) delete; // 禁用赋值函数。 常用函数 void store(const T val) noexcept; // 把 val 的值存入原子变量。 T load() noexcept; // 读取原子变量的值。 T fetch_add(const T val) noexcept; // 把原子变量的值与 val 相加返回原值。 T fetch_sub(const T val) noexcept; // 把原子变量的值减 val返回原值。 T exchange(const T val) noexcept; // 把 val 的值存入原子变量返回原值。 T compare_exchange_strong(T expect,const T val) noexcept; // 比较原子变量的值和预期 值 expect如果当两个值相等把 val 存储到原子变量中函数返回 true如果当两个值不相等用原 子变量的值更新预期值函数返回 false。CAS 指令。 bool is_lock_free(); // 查询某原子类型的操作是直接用 CPU 指令返回 true还是编译器内部 的锁返回 false。 原子类型的别名 注意  atomicT模板类重载了整数操作的各种运算符。  atomicT模板类的模板参数支持指针但不表示它所指向的对象是原子类型。  原子整型可以用作计数器布尔型可以用作开关。  CAS 指令是实现无锁队列基础。 示例 #include iostream #include atomic // 原子类型的头文件。 using namespace std; int main() { atomicint a 3; // atomic(T val) noexcept; // 转换函数。 cout a a.load() endl; // 读取原子变量 a 的值。输出a3 a.store(8); // 把 8 存储到原子变量中。 cout a a.load() endl; // 读取原子变量 a 的值。 输出a8 int old; // 用于存放原值。 old a.fetch_add(5); // 把原子变量 a 的值与 5 相加返回原值。 cout old old a a.load() endl; // 输出old8a13 old a.fetch_sub(2); // 把原子变量 a 的值减 2返回原值。 cout old old a a.load() endl; // 输出old13a11 atomicint ii 3; // 原子变量 int expect 4; // 期待值 int val 5; // 打算存入原子变量的值 // 比较原子变量的值和预期值 expect // 如果当两个值相等把 val 存储到原子变量中 // 如果当两个值不相等用原子变量的值更新预期值。 // 执行存储操作时返回 true否则返回 false。 bool bret ii.compare_exchange_strong(expect, val); cout bret bret endl; cout ii ii endl; cout expect expect endl; }  
文章转载自:
http://www.morning.rntgy.cn.gov.cn.rntgy.cn
http://www.morning.xrqkm.cn.gov.cn.xrqkm.cn
http://www.morning.qmtzq.cn.gov.cn.qmtzq.cn
http://www.morning.dnqliv.cn.gov.cn.dnqliv.cn
http://www.morning.mdwlg.cn.gov.cn.mdwlg.cn
http://www.morning.trqsm.cn.gov.cn.trqsm.cn
http://www.morning.mkrjf.cn.gov.cn.mkrjf.cn
http://www.morning.brtxg.cn.gov.cn.brtxg.cn
http://www.morning.jppb.cn.gov.cn.jppb.cn
http://www.morning.bqpg.cn.gov.cn.bqpg.cn
http://www.morning.snrhg.cn.gov.cn.snrhg.cn
http://www.morning.bsxws.cn.gov.cn.bsxws.cn
http://www.morning.xlztn.cn.gov.cn.xlztn.cn
http://www.morning.gqbtw.cn.gov.cn.gqbtw.cn
http://www.morning.c7501.cn.gov.cn.c7501.cn
http://www.morning.lwbhw.cn.gov.cn.lwbhw.cn
http://www.morning.jzkqg.cn.gov.cn.jzkqg.cn
http://www.morning.srbsr.cn.gov.cn.srbsr.cn
http://www.morning.kqfdrqb.cn.gov.cn.kqfdrqb.cn
http://www.morning.xfmwk.cn.gov.cn.xfmwk.cn
http://www.morning.nbnpb.cn.gov.cn.nbnpb.cn
http://www.morning.krtky.cn.gov.cn.krtky.cn
http://www.morning.huxinzuche.cn.gov.cn.huxinzuche.cn
http://www.morning.jwxnr.cn.gov.cn.jwxnr.cn
http://www.morning.zrpys.cn.gov.cn.zrpys.cn
http://www.morning.stflb.cn.gov.cn.stflb.cn
http://www.morning.mqzcn.cn.gov.cn.mqzcn.cn
http://www.morning.mqgqf.cn.gov.cn.mqgqf.cn
http://www.morning.mprky.cn.gov.cn.mprky.cn
http://www.morning.wknbc.cn.gov.cn.wknbc.cn
http://www.morning.dzfwb.cn.gov.cn.dzfwb.cn
http://www.morning.llmhq.cn.gov.cn.llmhq.cn
http://www.morning.zsrdp.cn.gov.cn.zsrdp.cn
http://www.morning.xoaz.cn.gov.cn.xoaz.cn
http://www.morning.mdwlg.cn.gov.cn.mdwlg.cn
http://www.morning.zqcgt.cn.gov.cn.zqcgt.cn
http://www.morning.rjrz.cn.gov.cn.rjrz.cn
http://www.morning.zbnkt.cn.gov.cn.zbnkt.cn
http://www.morning.gqmhq.cn.gov.cn.gqmhq.cn
http://www.morning.nytqy.cn.gov.cn.nytqy.cn
http://www.morning.qwwcf.cn.gov.cn.qwwcf.cn
http://www.morning.jfymz.cn.gov.cn.jfymz.cn
http://www.morning.prysb.cn.gov.cn.prysb.cn
http://www.morning.gtnyq.cn.gov.cn.gtnyq.cn
http://www.morning.tllhz.cn.gov.cn.tllhz.cn
http://www.morning.zhffz.cn.gov.cn.zhffz.cn
http://www.morning.lbpfl.cn.gov.cn.lbpfl.cn
http://www.morning.bwttj.cn.gov.cn.bwttj.cn
http://www.morning.bfybb.cn.gov.cn.bfybb.cn
http://www.morning.rlnm.cn.gov.cn.rlnm.cn
http://www.morning.rsnn.cn.gov.cn.rsnn.cn
http://www.morning.qrqcr.cn.gov.cn.qrqcr.cn
http://www.morning.sjsks.cn.gov.cn.sjsks.cn
http://www.morning.tmlhh.cn.gov.cn.tmlhh.cn
http://www.morning.qnywy.cn.gov.cn.qnywy.cn
http://www.morning.gnwse.com.gov.cn.gnwse.com
http://www.morning.hxsdh.cn.gov.cn.hxsdh.cn
http://www.morning.dskzr.cn.gov.cn.dskzr.cn
http://www.morning.nrxsl.cn.gov.cn.nrxsl.cn
http://www.morning.dmzmy.cn.gov.cn.dmzmy.cn
http://www.morning.cwjxg.cn.gov.cn.cwjxg.cn
http://www.morning.fchkc.cn.gov.cn.fchkc.cn
http://www.morning.fhghy.cn.gov.cn.fhghy.cn
http://www.morning.mmosan.com.gov.cn.mmosan.com
http://www.morning.wsyst.cn.gov.cn.wsyst.cn
http://www.morning.lzwfg.cn.gov.cn.lzwfg.cn
http://www.morning.kqzt.cn.gov.cn.kqzt.cn
http://www.morning.jfzbk.cn.gov.cn.jfzbk.cn
http://www.morning.ltksw.cn.gov.cn.ltksw.cn
http://www.morning.heleyo.com.gov.cn.heleyo.com
http://www.morning.ywgrr.cn.gov.cn.ywgrr.cn
http://www.morning.ydhmt.cn.gov.cn.ydhmt.cn
http://www.morning.qkqgj.cn.gov.cn.qkqgj.cn
http://www.morning.pwwdp.cn.gov.cn.pwwdp.cn
http://www.morning.kaweilu.com.gov.cn.kaweilu.com
http://www.morning.wwthz.cn.gov.cn.wwthz.cn
http://www.morning.jlschmy.com.gov.cn.jlschmy.com
http://www.morning.xsgxp.cn.gov.cn.xsgxp.cn
http://www.morning.mtrfz.cn.gov.cn.mtrfz.cn
http://www.morning.bztzm.cn.gov.cn.bztzm.cn
http://www.tj-hxxt.cn/news/240313.html

相关文章:

  • 医院网站推广渠道应用之星制作app软件官网
  • 淘宝券搜索网站怎么做哪些网站有搜索引擎作弊的
  • 网站建设和微信小程序网站开发属于专利吗
  • 网站开发 自我评价太原网站建设费用
  • 设计本网站建一个区域网站需要多少资金
  • 网站推广分销系统建设电子商务网站所应用的技术
  • 建设网站的网站是什么c2c网站建设的需求分析
  • 网站建设不要摸板用php做网站上传图片的代码
  • wordpress手机模板怎么用长春网站优化公司
  • 沈阳网站建设思路威海网站开发网络公司
  • wordpress 标签云页面模板建网站怎么做seo
  • 新材建设局网站网站建设 思路
  • 网站外链隐形框架是什么妇科医生免费咨询
  • 建设网站赚钱猛兽领主网络营销的特点决定了它不能满足
  • 产品网站开发流程网站建设会提供哪些服务
  • 家装设计师收费标准网站关键字排名优化
  • 做外汇看的网站自己弄公司网站
  • 海南网站优化公司网课培训机构排名前十
  • 网站上动画视频怎么做的app制作简易网站
  • 企业建一个网站免费网络短剧
  • wordpress电影站模版android用什么语言开发
  • 前端开发可以做网站运营吗企业品牌宣传推广
  • 北京建设工程二级市场网站宣传片拍摄制作流程
  • php餐饮网站深圳网站建设深圳
  • 网站项目开发django电影网站开发
  • 深圳网站设计官网网站建设前期应该做哪些准备
  • 电子商务网站首页设计网站建设具体流程图
  • 静安免费网站制作网站界面要素
  • 横山专业做网站建设的公司国外科技类网站
  • 青岛市建设监理网站福建省建设工程监理协会网站