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

ZLToolKit 源码分析(四):TaskExecutor 与 WorkThreadPool 任务调度

上篇分析了 ThreadPool 的底层实现,本文聚焦上层调度:TaskExecutorGetterImp 的负载均衡策略、WorkThreadPool 的双池设计,以及 ZLToolKit 如何实现"IO 线程"与"工作线程"的职责分离。

1. 线程池体系总览

TaskExecutorInterface (接口) └─ TaskExecutor (CPU 负载 + thread_local) ├─ ThreadPool (基础线程池) │ └─ EventPoller (IO 事件轮询) │ └─ EventPollerPool (IO 线程池单例) └─ WorkThreadPool (工作线程池单例)

ZLToolKit 将线程分为两类:

线程类型职责数量
IO 线程EventPollerPoolepoll 事件循环、Socket 读写CPU 核数
Worker 线程WorkThreadPool耗时计算、协议解析、媒体处理CPU 核数

2. TaskExecutorGetterImp — 执行器获取器

2.1 核心接口

classTaskExecutorGetterImp{public:// 获取第一个执行器TaskExecutor::PtrgetFirstExecutor();// 获取负载最低的执行器(轮转 + 负载加权)TaskExecutor::PtrgetExecutor();// 获取执行器数量size_tgetExecutorSize()const;// 遍历所有执行器voidforEach(constfunction<void(constTaskExecutor::Ptr&)>&cb);protected:vector<TaskExecutor::Ptr>_executors;atomic<size_t>_loop_index{0};};

2.2 getExecutor — 负载均衡算法

TaskExecutor::PtrTaskExecutorGetterImp::getExecutor(){autosize=_executors.size();if(size==0)returnnullptr;if(size==1)return_executors[0];// 策略:轮转 + 负载均衡// 1. 从轮转位置开始// 2. 找到负载最低的执行器// 3. 如果有负载为 0 的,直接返回(无锁快速路径)TaskExecutor::Ptr executor_min_load;floatmin_load=1.0f;for(size_t i=0;i<size;++i){autoidx=(_loop_index++)%size;auto&executor=_executors[idx];autoload=executor->
http://www.rkmt.cn/news/1446179.html

相关文章:

  • 鹰潭市黄金回收铂金回收白银回收彩金回收店铺TOP5实力权威排行榜+联系方式推荐 2026最新诚信优选 - 亦辰小黄鸭
  • 2026年6月国内质量流量计厂家十大品牌盘点:谁在真正解决计量难题? - 流量计品牌
  • 怎么选择一款合适的四级式电导率设备?哪些厂家值得信赖? - 仪表人小余
  • 永州市黄金回收铂金回收白银回收彩金回收店铺TOP5实力权威排行榜+联系方式推荐 2026最新诚信优选 - 亦辰小黄鸭
  • 广州周年庆活动策划哪个有经验
  • 临沧市黄金回收铂金回收白银回收彩金回收店铺TOP5实力权威排行榜+联系方式推荐 2026最新诚信优选 - 亦辰小黄鸭
  • 5分钟实现完全离线的本地语音识别:AnythingLLM隐私优先AI解决方案
  • 以太坊中的量子攻击面
  • 榆林市黄金回收铂金回收白银回收彩金回收店铺TOP5实力权威排行榜+联系方式推荐 2026最新诚信优选 - 亦辰小黄鸭
  • 没有银弹,但有飞轮|运维治理与AI的协同演进
  • TOPSIS模型避坑指南:为什么你的评价结果总是不合理?从指标正向化说起
  • 临汾市黄金回收铂金回收白银回收彩金回收店铺TOP5实力权威排行榜+联系方式推荐 2026最新诚信优选 - 亦辰小黄鸭
  • .NET Gadgeteer:模块化硬件与C#编程的快速原型开发框架
  • 别再死记硬背公式了!用Python+TI AWR1843毫米波雷达,5分钟搞懂FMCW测距测速
  • 玉林市黄金回收铂金回收白银回收彩金回收店铺TOP5实力权威排行榜+联系方式推荐 2026最新诚信优选 - 亦辰小黄鸭
  • 相分离数据库实操指南④:如何利用PhaSeDis挖掘相分离-疾病关联及潜在干预小分子?
  • 景德镇市黄金回收铂金回收白银回收彩金回收店铺TOP5实力权威排行榜+联系方式推荐 2026最新诚信优选 - 亦辰小黄鸭
  • 综合实力最强的EMBA有哪些?五大顶尖项目深度测评 - 品牌2026推荐
  • 手把手拆解HBM:从TSV、凸块到混合键合,搞懂3D封装到底怎么‘堆’内存
  • 2026最新固原市黄金回收铂金回收白银回收彩金回收全攻略;五家靠谱门店实力排行榜推荐及联系方式 - 前途无量YY
  • 2026最新贺州市黄金回收铂金回收白银回收彩金回收全攻略;五家靠谱门店实力排行榜推荐及联系方式 - 前途无量YY
  • 联想机器学习岗面试全记录:从SHL题库到技术面,我的2周拿Offer实战复盘
  • 别再死磕DDPM了!用BBDM(布朗桥扩散模型)做图像风格迁移,效果和效率都更香
  • 警钟敲响:从 Mac Office“只读危机”看软件授权的脆弱性与技术应对
  • 九江市黄金回收铂金回收白银回收彩金回收店铺TOP5实力权威排行榜+联系方式推荐 2026最新诚信优选 - 亦辰小黄鸭
  • 2026最新广元市黄金回收铂金回收白银回收彩金回收全攻略;五家靠谱门店实力排行榜推荐及联系方式 - 前途无量YY
  • 2026最新衡水市黄金回收铂金回收白银回收彩金回收全攻略;五家靠谱门店实力排行榜推荐及联系方式 - 前途无量YY
  • 2026最新衡阳市黄金回收铂金回收白银回收彩金回收全攻略;五家靠谱门店实力排行榜推荐及联系方式 - 前途无量YY
  • 麒麟V10 SP3实战:从`/etc/.productinfo`到`nkvers`,系统版本信息查询全攻略
  • 空间加速器中张量数据布局优化与存储体冲突解决