《ZLToolKit源码学习笔记》(6)线程模块之整体框架概述

 系列文章目录

《ZLToolKit源码学习笔记》(1)VS2019源码编译

《ZLToolKit源码学习笔记》(2)工具模块之日志功能分析

《ZLToolKit源码学习笔记》(3)工具模块之终端命令解析

《ZLToolKit源码学习笔记》(4)工具模块之消息广播器

《ZLToolKit源码学习笔记》(5)工具模块之资源池

《ZLToolKit源码学习笔记》(6)线程模块之整体框架概述(本文)

《ZLToolKit源码学习笔记》(7)线程模块之线程池组件:任务队列与线程组

《ZLToolKit源码学习笔记》(8)线程模块之线程负载计算器

《ZLToolKit源码学习笔记》(9)线程模块之任务执行器

《ZLToolKit源码学习笔记》(10)线程模块之线程池

《ZLToolKit源码学习笔记》(11)线程模块之工作线程池WorkThreadPool

《ZLToolKit源码学习笔记》(12)事件轮询模块之整体框架概述

《ZLToolKit源码学习笔记》(13)事件轮询模块之管道的简单封装

《ZLToolKit源码学习笔记》(14)事件轮询模块之定时器

《ZLToolKit源码学习笔记》(15)事件轮询模块之事件轮询器EventPoller

《ZLToolKit源码学习笔记》(16)网络模块之整体框架概述

《ZLToolKit源码学习笔记》(17)网络模块之基础接口封装类SockUtil

《ZLToolKit源码学习笔记》(18)网络模块之Buffer缓存

《ZLToolKit源码学习笔记》(19)网络模块之套接字封装

《ZLToolKit源码学习笔记》(20)网络模块之TcpServer

《ZLToolKit源码学习笔记》(21)网络模块之TcpClient与Session

《ZLToolKit源码学习笔记》(22)网络模块之UdpServer


前言

线程模块包括了任务队列、信号量、线程组、线程池等功能封装。


目录

  系列文章目录

前言

一、概述

二、类图


一、概述

线程模块主要包含以下文件:

semaphore.h信号量。semaphore类,封装了条件变量,提供了post和wait方法。
TaskExecutor.cpp,TaskExecutor.h包括线程负载计数器(ThreadLoadCounter)、任务执行器(TaskExecutor)、任务执行器获取器(TaskExecutorGetterImp)、可取消任务封装类(TaskCancelableImp)
TaskQueue.h任务队列。队列中存储的是函数对象,任务的类型是function<void()>,所以可以存储所有的可调用对象,包括函数、lambda表达式、重载了()运算符的类实例化对象。
threadgroup.h线程组。管理一组线程。提供了创建线程(create_thread)、删除指定线程(remove_thread)、等待线程组中的线程退出(join_all)、判断指定线程是否在线程组中(is_thread_in)、判断当前线程是否在线程组中(is_this_thread_in)、获取当前线程组中线程数量(size)
ThreadPool.h线程池。组件管理者,将任务队列以及线程组关联起来使用。继承了TaskExecutor,支持同步和 异步执行任务。
WorkThreadPool.cpp,WorkThreadPool.h工作线程池,也是管理一组线程,但和ThreadPool不同,ThreadPool所有线程共享任务队列,存在竞争关系,而WorkThreadPool中的每个线程都有自己的队列(实际上是EventPoller管道事件驱动,一个 EventPoller对应一个线程)、各线程不存在竞争关系。

二、类图

各文件中的类关系如下图:

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦时小

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值