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

做招投标有哪些网站wordpress主题整站

做招投标有哪些网站,wordpress主题整站,中国最好的做网站高手,上海响应式网站建设费用目录 1 概述2 使用实例3 接口使用3.1 lock_guard3.2 adopt_lock3.3 defer_lock3.4 try_to_lock3.5 try_lock3.6 release3.7 lock3.8 call_one1 概述 锁保护是通过使互斥对象始终处于锁定状态来管理互斥对象的对象。。   在构造时,互斥对象被调用线程锁定,在析构时,互斥被解… 目录 1 概述2 使用实例3 接口使用3.1 lock_guard3.2 adopt_lock3.3 defer_lock3.4 try_to_lock3.5 try_lock3.6 release3.7 lock3.8 call_one 1 概述 锁保护是通过使互斥对象始终处于锁定状态来管理互斥对象的对象。。   在构造时,互斥对象被调用线程锁定,在析构时,互斥被解锁。它是最简单的锁,作为一个具有自动持续时间的对象特别有用,该对象会持续到其上下文结束。通过这种方式,它可以保证互斥对象在抛出异常时正确解锁。   但请注意,lock_guard对象不会以任何方式管理互斥对象的生存期:互斥对象的持续时间应至少延长到锁定它的lock_guad被析构为止。   唯一锁是一个在锁定和未锁定两种状态下管理具有唯一所有权的互斥对象的对象。   在构造时(或通过对其进行移动赋值),对象获取一个互斥对象,由其锁定和解锁操作负责。   对象支持两种状态:锁定和解锁。   这个类保证销毁时的解锁状态(即使没有显式调用)。因此,作为一个具有自动持续时间的对象,它特别有用,因为它可以确保互斥对象在抛出异常时正确解锁。   不过,请注意,unique_lock对象不会以任何方式管理互斥对象的生存期:互斥对象的持续时间应至少延长到管理它的unique_lock析构为止。 其类图如下: 2 使用实例 struct Function4Lock {int counter = 0;void print_even(int x){if( x % 2 == 0)std::cerr x " is event\n";elsethrow (std::logic_error("not even"));}void print_no_use_lock(std::mutex mutex, int x){try{mutex.lock();print_even(x);counter++;mutex.unlock();}catch(const std::logic_error e){mutex.unlock();std::cerr e.what() '\n';}}void print_use_lock_guard(std::mutex mutex, int x){try{std::lock_guardstd::mutex lock(mutex);print_even(x);counter++;}catch(const std::logic_error e){std::cerr e.what() '\n';}}void print_use_unique_lock(std::mutex mutex, int x){try{std::unique_lockstd::mutex lock(mutex);print_even(x);counter++;}catch(const std::logic_error e){std::cerr e.what() '\n';}} };void LocksSuite::lock_guard() {std::thread threads[10];Function4Lock function;std::mutex mutex;function.counter = 0;for(int i = 0; i 10; i++)threads[i] = std::thread(Function4Lock::print_no_use_lock, std::ref(function), std::ref(mutex), i + 1);for(auto thread: threads)thread.join();TEST_ASSERT_EQUALS(true, function.counter == 5)function.counter = 0;for(int i = 0; i 10; i++)threads[i] = std::thread(Function4Lock::print_use_lock_guard, std::ref(function), std::ref(mutex), i + 1);for(auto thread: threads)thread.join();TEST_ASSERT_EQUALS(true, function.counter == 5)function.counter = 0;for(int i = 0; i 10; i++)threads[i] = std::thread(Function4Lock::print_use_unique_lock, std::ref(function), std::ref(mutex), i + 1);for(auto thread: threads)thread.join();TEST_ASSERT_EQUALS(true, function.counter == 5) }说明: print_no_use_lock不使用锁管理互斥对象,代码复杂不少,如果程序有多种异常及多个分支代码会更复杂。print_use_lock_guard 使用std::lock_guard管理互斥对象,代码简洁很多,在异常情况下和多分支情况下,std::lock_guard的析构函数会自动释放锁。print_use_unique_lock 使用std::unique_lock(不带参数构造)管理互斥对象, 功能与std::lock_guard相同。std::unique_lock可以构造4种类型锁: normal 构造函数中调用lock加锁,析构函数调用unlock解锁try_to_lock 构造函数中调用try_lock加锁,通过函数owns_lock判断释放锁定,析构函数如果锁定调用unlock解锁defer_lock 在构造函数中不锁定,通过调用lock/try_lock/try_lock_for/try_lock_unti来加锁,析构函数如果锁定调用unlock解锁。adopt_lock 在构造函数中不锁定, 假设在构造之前mutex已加锁,析构函数调用unlock解锁3 接口使用 3.1 lock_guard void LocksSuite::lock_guard() {std::thread threads[10];Function4Lock function;std::mutex mutex;function.counter = 0;for(int i = 0; i 10; i++)threads[i] = std::thread(Function4Lock::print_no_use_lock, std::ref(function), std::ref
http://www.tj-hxxt.cn/news/216360.html

相关文章:

  • 鹤壁做网站哪家便宜建设银行网站信息补充
  • 青海网站建设系统网站开发项目周报
  • 建设网站公司哪家技术好wordpress记录访问量
  • 无需登录网页小游戏网站为什么建设网站要年年交钱
  • 杭州购物网站建设开发企业小程序公司
  • 建站平台有哪些wordpress模板分享
  • wordpress商城建站教程抖音推广费用标准
  • 现在用什么工具做网站好国外做水广告网站大全
  • 建设部网站焊工证件查询wordpress推送服务器
  • 数字化档案馆及网站的建设企业logo标志设计免费
  • 网站策划方案如何做随县网站建设
  • 济南门户网站建设程序wordpress
  • 厦门海绵城市建设官方网站网站内容注意事项
  • 深圳购物网站建中建卓越建设有限公司网站首页
  • 淘客怎么样做网站哪些网站可以找兼职做室内设计
  • iis怎么做ip网站吗安徽省建设监理协会 旧网站
  • 东莞企业网站设计排名做私活 网站
  • 网站文件目录网页设计公司有哪些岗位
  • 环保产品企业网站建设iis怎么做网站
  • 海南平台网站建设平台视频解析接口网站怎么做
  • 商城网站建设公司价格网页游戏推广网站怎么做
  • 社交网站图片展示深圳龙华网站建设
  • 网站建设要不要监理金融app开发
  • 深圳哪家网站建设公司好自己制作logo免费 生成器
  • 网站命名的原则包括北京建设工程交易中心招标网
  • 奉贤高端网站建设网站导航html源码
  • 餐厅网站建设什么经典网页传奇
  • 深圳网站制作公司信息观光园网站建设
  • 长沙给中小企业做网站的公司用织梦做网站费用
  • 建设信用卡申请官方网站网站开发制作