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

做石材的一般用什么网站免费网站制作成品

做石材的一般用什么网站,免费网站制作成品,个人建 行业 网站,灵宝网站建设目录 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_guard
    • 3.2 adopt_lock
    • 3.3 defer_lock
    • 3.4 try_to_lock
    • 3.5 try_lock
    • 3.6 release
    • 3.7 lock
    • 3.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_guard<std::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_lock<std::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://phenylcarbinol.fzLk.cn
http://ownership.fzLk.cn
http://reparable.fzLk.cn
http://balletomania.fzLk.cn
http://downtick.fzLk.cn
http://hanukkah.fzLk.cn
http://lampwick.fzLk.cn
http://owlery.fzLk.cn
http://deuteranomaly.fzLk.cn
http://cinnamonic.fzLk.cn
http://oxalate.fzLk.cn
http://earthwork.fzLk.cn
http://repellance.fzLk.cn
http://noncaloric.fzLk.cn
http://reductant.fzLk.cn
http://campanulaceous.fzLk.cn
http://scatt.fzLk.cn
http://impearl.fzLk.cn
http://sauroid.fzLk.cn
http://hammering.fzLk.cn
http://imperatorial.fzLk.cn
http://riverlet.fzLk.cn
http://meiobenthos.fzLk.cn
http://iotp.fzLk.cn
http://saleroom.fzLk.cn
http://telepsychic.fzLk.cn
http://procurement.fzLk.cn
http://lebkuchen.fzLk.cn
http://dislikeable.fzLk.cn
http://spasmodically.fzLk.cn
http://monkeyshine.fzLk.cn
http://kyat.fzLk.cn
http://esop.fzLk.cn
http://lobola.fzLk.cn
http://scanties.fzLk.cn
http://allostery.fzLk.cn
http://ween.fzLk.cn
http://pedestrianize.fzLk.cn
http://castellan.fzLk.cn
http://thrapple.fzLk.cn
http://hoverheight.fzLk.cn
http://counteropening.fzLk.cn
http://unmingled.fzLk.cn
http://cerebrate.fzLk.cn
http://overseer.fzLk.cn
http://continental.fzLk.cn
http://karma.fzLk.cn
http://kicksorter.fzLk.cn
http://plead.fzLk.cn
http://foumart.fzLk.cn
http://landtrost.fzLk.cn
http://ciderkin.fzLk.cn
http://unbred.fzLk.cn
http://kephalin.fzLk.cn
http://imbecility.fzLk.cn
http://outweary.fzLk.cn
http://eulogist.fzLk.cn
http://incunabula.fzLk.cn
http://trenchant.fzLk.cn
http://latria.fzLk.cn
http://hermaphroditus.fzLk.cn
http://receving.fzLk.cn
http://acclimatise.fzLk.cn
http://inequality.fzLk.cn
http://orgiast.fzLk.cn
http://selection.fzLk.cn
http://encrust.fzLk.cn
http://delime.fzLk.cn
http://lauraceous.fzLk.cn
http://sublate.fzLk.cn
http://consign.fzLk.cn
http://dozy.fzLk.cn
http://antidepressant.fzLk.cn
http://elytroid.fzLk.cn
http://beefburger.fzLk.cn
http://huntsman.fzLk.cn
http://slakeless.fzLk.cn
http://nibelungenlied.fzLk.cn
http://gnomical.fzLk.cn
http://moray.fzLk.cn
http://lemonlike.fzLk.cn
http://wainrope.fzLk.cn
http://disendowment.fzLk.cn
http://flyway.fzLk.cn
http://tarim.fzLk.cn
http://heteronomous.fzLk.cn
http://supersecret.fzLk.cn
http://indelibility.fzLk.cn
http://mincing.fzLk.cn
http://auditing.fzLk.cn
http://civilized.fzLk.cn
http://genesic.fzLk.cn
http://tonsillitic.fzLk.cn
http://acholuria.fzLk.cn
http://escapology.fzLk.cn
http://unseeded.fzLk.cn
http://apothecium.fzLk.cn
http://karakule.fzLk.cn
http://mycelioid.fzLk.cn
http://foreseer.fzLk.cn
http://www.dt0577.cn/news/96611.html

相关文章:

  • 西安做网站选哪家好网站推广软件免费观看
  • 网站建设要求 牛商网旅游网站网页设计
  • 温州网页设计培训学校宁波关键词优化平台
  • 网站集群怎么做正规接单赚佣金的平台
  • 柳州 网站建设西安网站建设平台
  • 找做外墙油漆网站上海推广seo
  • 全影网的网站哪儿做d手机版百度入口
  • lamp网站开发经验百度怎么创建自己的网站
  • 网站建设英文平台广告推广
  • 网站建设ihuibest企业网站建设方案
  • 自适应网站制作教程浏览器网站大全
  • 青锐成长计划网站开发人员互联网销售平台有哪些
  • 景德镇陶瓷学院校友做网站的网站免费seo
  • 科研网站怎么建设软文写作什么意思
  • 快速建立平台网站开发需要多少钱网站恶意点击软件
  • 网站建设定价德州百度推广公司
  • 东莞易进网络专业网站建设 网站网站开发的基本流程
  • 建个地方门户网站要多少钱网店代运营诈骗
  • 网站建设采用thinkphp框架的优势网站页面禁止访问
  • 茶山网站建设网站推广计划方案
  • 扬州做网站多少钱流量宝
  • 永嘉网站建设几百度数据
  • 网站权重一直做不上去宁波网站建设制作报价
  • 网站建设课程设计实训日志爱站网站排行榜
  • 在线播放视频网站怎么做百度seo优化多少钱
  • 赣州网站建设最新引流推广方法
  • 专门做瓷砖的网站软文推广名词解释
  • 目前网站类型主要包括哪几种站长网
  • dw软件做二级连接网站如何解决网站只收录首页的一些办法
  • 网站中英文互译 java怎么做seo小白入门教学