
ZLToolKit源码学习笔记
文章平均质量分 91
秦时小
这个作者很懒,什么都没留下…
展开
-
《ZLToolKit源码学习笔记》(16)网络模块之整体框架概述
网络模块主要是对系统网络相关API进行了封装,并提供了易用的TCP服务器、TCP客户端、UDP负载均衡服务器、TCP、UDP会话等基础类。原创 2022-01-21 21:12:54 · 3958 阅读 · 0 评论 -
《ZLToolKit源码学习笔记》(21)网络模块之TcpClient与Session
本节学习ZLToolKit的TCP客户端封装以及服务器侧收到客户端连接后的Session封装。原创 2022-01-21 20:25:48 · 2170 阅读 · 1 评论 -
《ZLToolKit源码学习笔记》(22)网络模块之UdpServer
服务器模型:与TcpServer类似,使用多线程+epoll (select),一个Serverfd + 多个epoll实例每一个线程都创建了一个epoll实例,并以ET边沿触发模式监听同一个Server fd的读事件,使用EPOLLEXCLUSIVE标志位防止惊群效应,线程阻塞在epoll_wait上等待客户端连接。当有客户端发送数据到Server fd时,针对该客户端创建一个新的会话(新的文件描述符,同样使用ET边沿触发),后续该客户端的数据将不会再发送到Server fd。原创 2022-01-16 21:13:14 · 3136 阅读 · 2 评论 -
《ZLToolKit源码学习笔记》(19)网络模块之套接字封装
套接字抽象封装,包含TCP服务器、TCP客户端(TCP session)、UDP套接字、与EventPoller关联处理描述符事件,数据发送以及接收处理等。原创 2022-01-15 20:31:05 · 2486 阅读 · 0 评论 -
《ZLToolKit源码学习笔记》(20)网络模块之TcpServer
创建多个子TcpServer对象,这些子TcpServer对象通过Socket对象克隆的方式在多个poller线程中监听同一个listen fd,这样这个TCP服务器将会通过抢占式accept的方式把客户端均匀的分布到不同的poller线程,通过该方式能实现客户端负载均衡以及提高连接接收速度。原创 2022-01-08 23:41:30 · 3209 阅读 · 1 评论 -
《ZLToolKit源码学习笔记》(18)网络模块之Buffer缓存
对原始数据char* data进行封装,提供不同的数据访问方式,用于TCP与UDP的数据收发。原创 2022-01-01 23:32:45 · 1964 阅读 · 1 评论 -
《ZLToolKit源码学习笔记》(17)网络模块之基础接口封装类SockUtil
本部分主要看下sockutil.h和sockutil.cpp两个文件。该模块统一封装不同平台下的网络相关API,作为后续网络编程的基础接口。原创 2021-12-28 20:42:25 · 2495 阅读 · 1 评论 -
《ZLToolKit源码学习笔记》(15)事件轮询模块之事件轮询器EventPoller
一个服务器程序,一般都需要处理三类事件:IO事件、定时事件、信号。而为了方便处理,我们需要统一事件源,比如使用IO复用来管理所有事件。其次,为了实现跨平台,我们需要提供一个平台无关的统一接口,与平台相关的实现在内部完成。比如对于IO复用,linux下有epoll,windows等其它平台有select,这里我们就可以统一封装,对外提供一致的接口。一个事件管理接口,还应该是支持多线程的,本节学习下ZLToolKit中的事件管理工具:EventPoller。原创 2021-12-25 23:09:41 · 2007 阅读 · 1 评论 -
《ZLToolKit源码学习笔记》(14)事件轮询模块之定时器
ZLToolKit的定时器是通过线程+循环判断任务的执行时间是否到达来实现,添加任务时,记录该任务下一次执行时间点,然后把定时任务插入到队列中,在线程runLoop中,检测队列中是否有任务已经到达执行时间点,有则立即执行该任务,否则,把最近将要执行的任务的时间点作为线程的休眠时间。以此循环,线程下一次唤醒后重复执行上述操作。原创 2021-12-25 15:12:46 · 1537 阅读 · 0 评论 -
《ZLToolKit源码学习笔记》(12)事件轮询模块之整体框架概述
事件轮询模块主要是统一封装了对事件的处理机制,包括管道、网络IO、定时器等。原创 2021-12-22 23:48:44 · 1412 阅读 · 1 评论 -
《ZLToolKit源码学习笔记》(13)事件轮询模块之管道的简单封装
管道是进程(线程)间通信的一种常用手段,本节学习下ZLToolKit对管道的封装。原创 2021-12-21 23:14:41 · 1455 阅读 · 0 评论 -
《ZLToolKit源码学习笔记》(11)线程模块之工作线程池WorkThreadPool
WorkThreadPool管理一组EventPoller事件轮询器线程,任务通过分配到不同的EventPoller来执行。原创 2021-12-19 21:25:09 · 1870 阅读 · 0 评论 -
《ZLToolKit源码学习笔记》(10)线程模块之线程池
基于任务队列(TaskQueue)和线程组(thread_group),实现线程池,线程池中所有线程等待在任务队列上,循环执行:等待任务到来->获取到任务->执行任务。原创 2021-12-18 23:13:50 · 2287 阅读 · 0 评论 -
《ZLToolKit源码学习笔记》(9)线程模块之任务执行器
任务执行器是一个抽象接口类,定义了一套同步及异步执行任务的接口。原创 2021-12-17 23:21:28 · 1844 阅读 · 0 评论 -
《ZLToolKit源码学习笔记》(8)线程模块之线程负载计算器
一个线程,要么处于活跃状态,在执行任务,此时占用CPU,要么处于休眠状态,等待任务的到来,此时不占用CPU,ThreadLoadCounter就是用于统计某一段时间内,线程处于活跃状态所占的比率。也可以说是该线程对CPU的使用率。原创 2021-12-16 20:58:00 · 1817 阅读 · 0 评论 -
《ZLToolKit源码学习笔记》(7)线程模块之线程池组件:任务队列与线程组
在学习线程池之前,先看下线程池的两个基本组件:任务队列与线程组原创 2021-12-13 19:48:13 · 2206 阅读 · 0 评论 -
《ZLToolKit源码学习笔记》(6)线程模块之整体框架概述
线程模块包括了任务队列、信号量、线程组、线程池等功能封装原创 2021-12-12 19:58:34 · 2730 阅读 · 0 评论 -
《ZLToolKit源码学习笔记》(5)工具模块之资源池
该部分功能在ResourcePool.h中实现,由shared_ptr_imp、ResourcePool_l、ResourcePool三个类组成。原创 2021-12-11 23:01:38 · 2453 阅读 · 0 评论 -
《ZLToolKit源码学习笔记》(4)工具模块之消息广播器
系列文章目录《ZLToolKit源码学习笔记》(1)VS2019源码编译《ZLToolKit源码学习笔记》(2)工具模块之日志功能分析《ZLToolKit源码学习笔记》(3)工具模块之终端命令解析《ZLToolKit源码学习笔记》(4)工具模块之消息广播器(本文)前言消息广播器相关功能对应NoticeCenter.h和NoticeCenter.cpp文件。目录系列文章目录前言一、使用二、源码结构分析2.1、事件管理:NoticeCenter2.2、事件分发原创 2021-11-22 21:09:50 · 2401 阅读 · 0 评论 -
《ZLToolKit源码学习笔记》(3)工具模块之终端命令解析
系列文章目录《ZLToolKit源码学习笔记》(1)VS2019源码编译《ZLToolKit源码学习笔记》(2)工具模块之日志模块分析《ZLToolKit源码学习笔记》(3)工具模块之终端命令解析(本文)文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言终端命令解析相关功能对应cmd.h和cmd.cpp文件。一、使用使用示例可以参见test_pingpong.cpp和test_shell.cpp,实原创 2021-11-14 18:23:02 · 2571 阅读 · 2 评论 -
《ZLToolKit源码学习笔记》(2)工具模块之日志功能分析
系列文章目录《ZLToolKit源码学习笔记》(1)VS2019源码编译《ZLToolKit源码学习笔记》(2)日志模块分析(本文)文章目录目录系列文章目录文章目录前言一、日志功能的使用1、日志级别2、日志的调用方式二、源码结构分析1、类图2、各模块分析2.1、LogContextCapturer:2.2、LogContext2.3、Logger2.4、logWriter2.5、LogChannel前言日志模块主要是logg原创 2021-11-06 22:37:08 · 4395 阅读 · 4 评论 -
《ZLToolKit源码学习笔记》(1)VS2019源码编译
系列文章目录ZLToolKit源码学习笔记(1):VS2019源码编译(本文)目录一、源码下载二、辅助工具下载1、cmake-gui2、类设计器三、VS2019编译1.通过cmake直接打开2.通过sln解决方案打开一、源码下载下载路径:https://github.com/ZLMediaKit/ZLToolKit二、辅助工具下载1、cmake-gui下载地址:https://cmake.org/files该路径下有cmake的各个版本,.原创 2021-11-06 14:45:57 · 5579 阅读 · 0 评论