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

muduo之线程同步CountDownLatch

简介

CountDownLatch称为门阀,用于等待另外线程执行完成

结构

CountDownLatch
- int count_
- mutable MutexLock mutex_
- Condition condition_
+CountDownLatch(int count)
+void wait()
+void countDown()
+int getCount()

内部使用count_来计数,表示需要等待的线程数,线程执行完后减1,等待线程直到计数为0

构造函数

初始化互斥量,条件变量,以及需要等待的线程数

CountDownLatch::CountDownLatch(int count): mutex_(),condition_(mutex_),count_(count)
{
}

wait

等待线程执行完

void CountDownLatch::wait()
{MutexLockGuard lock(mutex_);while (count_ > 0){condition_.wait();}
}

countDown

线程执行完后,调用countDown将计数减1,当减到0时,会唤醒等待线程

void CountDownLatch::countDown()
{MutexLockGuard lock(mutex_);--count_;if (count_ == 0){condition_.notifyAll();}
}

getCount

获取等待的线程数

int CountDownLatch::getCount() const
{MutexLockGuard lock(mutex_);return count_;
}
http://www.lryc.cn/news/486412.html

相关文章:

  • 【Python系列】Python中打印详细堆栈信息的技巧
  • SpringBoot中监听器、过滤器、拦截器和AOP详解
  • 如何让手机ip变成动态
  • [Qt platform plugin问题] Could not load the Qt platform plugin “xcb“
  • 嵌入式开发人员如何选择合适的开源前端框架进行Web开发
  • MySQL数据库(七)----查询相关操作(子查询)
  • 01_Spring开胃菜
  • SpringBoot使用AspectJ的@Around注解实现AOP全局记录接口:请求日志、响应日志、异常日志
  • WPF下播放Rtmp的解决方案
  • 7.高可用集群架构Keepalived双主热备原理
  • 为以人工智能为中心的工作负载重新设计的全局控制台
  • go channel中的 close注意事项 range取数据
  • Vue3 -- 项目配置之eslint【企业级项目配置保姆级教程1】
  • 鸿蒙开发应用权限管理
  • 【数据库】如何保证数据库迁移过程中数据的一致性?
  • C++之内存管理
  • ISP是什么?
  • 机房动环境监控用各种列表已经淘汰了,现在都是可视化图表展示了
  • RHCE的练习(12)
  • uniapp自动注册机制:easycom
  • 【论文阅读】(Security) Assertions by Large Language Models
  • C++ 编程基础(5)类与对象 | 5.8、面向对象五大原则
  • node.js中express的基本了解
  • AI大模型(一):Prompt AI编程
  • ArcGIS Pro属性表乱码与字段名3个汉字解决方案大总结
  • 小程序-基于java+SpringBoot+Vue的驾校预约平台设计与实现
  • 计算机网络网关简介
  • 如何用python将pdf转换为json格式
  • STL关联式容器介绍
  • java计算机毕业设计选题参考3000篇