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

深圳网站建设案做网站的地方

深圳网站建设案,做网站的地方,网站建设服务市场,毛概课程网站建设背景: c20 关于多线程并发新增了 latch, barrier, semaphore ,接下来就按照一个一个进行介绍 latch latch 是一次性使用的线程协调点, 一旦给定数量的线程达到latch点时, 所有线程都会解除阻塞, 并继续执行. 基本上它是一个计数器, 在每个线程到达latch点时倒数, 一旦计数器达…背景: c20 关于多线程并发新增了 latch, barrier, semaphore ,接下来就按照一个一个进行介绍 latch latch 是一次性使用的线程协调点, 一旦给定数量的线程达到latch点时, 所有线程都会解除阻塞, 并继续执行. 基本上它是一个计数器, 在每个线程到达latch点时倒数, 一旦计数器达到0, latch 将无限制保持在一个有信号的状态, 所有阻塞线程都将解除阻塞, 随后到达latch点的任何线程会立刻被允许执行. latch 由 std::latch实现, 在latch 中定义, 构造函数接收需要到达latch点的所需线程数, 到达latch点的线程可以调用arrive_and_wait(), 它递减latch 计数器并阻塞, 直到latch有信号为止. 线程也可以通过调用wait 在不减少计数器的情况下阻塞在latch点上, try_wait() 方法可用与检查计数器是否达到零, 最后如果需要,还可以通过count_down()来减少计数器, 而不会阻塞. 代码如下: #includelatch #include vector #include iostream #include thread #include memory #include chronoint main() {std::vectorstd::jthread threads;std::latch startLatch{ 1 };for (int i 0; i 10; i){threads.push_back(std::jthread{[i, startLatch]{std::cout i in wait std::endl;startLatch.wait();std::cout i runing std::endl;}});}std::coutstart beforestd::endl;std::this_thread::sleep_for(std::chrono::milliseconds(5));startLatch.count_down();std::coutstart afterstd::endl;return 0; } clang -stdc20 -pthread latch.cpp barrier barrier 是由一系列阶段组成的可重用线程协调机制, 允许多线程在barrier点阻塞. 当给定数量的线程到达barrier时,  将执行完成阶段的回调, 解除所有阻塞线程的阻塞, 重制线程技术器, 并开始下一个阶段. 在每隔阶段中, 可以调整下一个阶段的预期线程数. barrier对于在循环之间执行同步非常有用. 例如假设多线程并发执行, 并在一个循环中执行一些计算. 进一步假设一旦这些计算执行完成, 需要在线程开始其循环的新迭代之前对结果进一步处理. 对于这种情况, 设置barrier是完美的, 所有的线程都会阻塞在barrier处, 当它们全部到达时, 完成阶段回调将处理结果, 然后解除所有阻塞, 以开始它们的下一次迭代. barrier 由 std::barrier实现, 在barrier中定义, barrier 最重要的方式是arrive_and_wait(), 他减少计数器, 然后阻塞线程, 直到当前阶段完成. 下边是具体代码示例 #includethread #includeiostream #includevector #include chrono #include barrier void completionFunction() noexcept { }int main() {const size_t numberOfThreads{4};std::barrier barrierPoint {numberOfThreads, completionFunction};std::vectorstd::jthread threads;for (int i 0; i numberOfThreads; i){threads.push_back(std::jthread{[i,barrierPoint](std::stop_token token){while (!token.stop_requested()){std::couti in waitstd::endl;barrierPoint.arrive_and_wait();std::couti runingstd::endl;std::this_thread::sleep_for(std::chrono::milliseconds(1000));}}});}return 0; } clang -stdc20 -pthread barrier.cpp semphore semphore 信号量 是轻量级同步原语, 可用作其他同步机制(如mutex, latch, barrier)的构建块. 基本上上一个semaphore由一个表示很多插槽的计数器组成. 计数器在构造函数中初始化. 如果获得了一个插槽, 计数器就减少, 而释放插槽将增加计数器. 在semaphore中定义了两个semaphore类, std::count_semaphore 和 binary_semaphore. 前一种模型是非负资源计数, 后者只有一个插槽, 该槽事空的, 要么不是空的, 完全适合作为互斥的构建快. 代码如下: #includeiostream #include semaphore #include thread #include vector int main() {std::counting_semaphore semaphore{4};std::vectorstd::jthread threads;for (int i 0; i 4; i){threads.push_back(std::jthread{[semaphore](){semaphore.acquire();semaphore.release();}});} } clang -stdc20 -pthread barrier.cpp
http://www.sadfv.cn/news/292542/

相关文章:

  • 网站建设建站流程方案百度关键词推广2元一天
  • 建设工程职称论文查询网站番禺附近网站建设推广
  • 移动网站开发公司网站制作素材代码
  • 南通网站排名优化国家建设免费论文网站
  • 公司网站推广方法正邦设计作品
  • 做外贸有哪些好的网站有哪些简答网站内容建设的时候内链重要性
  • 博罗网站建设哪家便宜python编程软件用哪个
  • 备案 网站名称 重复wordpress上不去了
  • 宜昌网站建设平台html5手机网站案例
  • 湖南网站建设 尖端磐石网络网站设计师 要求
  • 包装东莞网站建设0769网架公司招聘施工队伍
  • 南昌制作网站的公司网站开发职责
  • 河南洛阳网站建设京东商城在线网上购物
  • dede网站如何做中英文版本商业网站建设视频教程
  • 商城网站建设哪家便宜创建博客网站
  • 济源建设网站网页设计与制作实训室厂家
  • 网站福利你们会回来感谢我的做网站和微信小程序
  • 专业网站建设专业网站设计网页动画设计培训
  • 英文网站seo如何做微信公众号文章编辑wordpress
  • 自考本科条件湛江seo
  • 营销型网站的网址天津百度网站快速排名
  • 胶州建网站wordpress播放器样式
  • 网站开发开发优势wordpress怎么做伪静态页面
  • 阿里云建网站流程苏州市市政建设集团公司网站
  • 京东第一次做网站做网站价格表
  • 网站审核时间网站傻瓜式建设
  • 广西南宁网站公司免费软件英文
  • 专题研究网站建设工作动态400网站总机 阿里云
  • asp网站安全吗wordpress做的企业官网
  • 建个什么网站吗企业支付宝登录入口