ive 类核心成员变量及其功能说明如下:
从上面的成员变量列表看出,队列、线程这两个大类可以进一步细化为不同的小类,如下:
1)线程: 、、
2)队列: 、、
从上面的ive 类中的核心接口函数代码实现可以归纳为如下三类:
1)时间计数相关核心代码实现
2) 工作线程创建及任务调度相关核心接口代码实现
3) 控制线程设计原理及核心代码实现
.1 线程运行时间计算相关核心代码实现
线程运行时间计算核心算法如下:
1. //线程运行时间统计,包含两种类型时间统计2. enum class ThreadTimer3. {4.//线程执行task任务的时间+等待数据的时间5.Running,6.//只包含线程执行task任务的时间7.Executing8. };9.10. //线程私有统计信息,记录该线程运行时间,运行时间分为两种:11. //1. 执行task任务的时间 2. 如果没有客户端请求,线程就会等待,这就是线程等待时间12. struct ThreadState {13.//构造初始化14.ThreadState(TickSource* ts) : running(ts), executing(ts) {}15.//线程一次循环处理的时间,包括IO等待和执行对应网络事件对应task的时间16.CumulativeTickTimer running;17.//线程一次循环处理中执行task任务的时间,也就是真正工作的时间18.CumulativeTickTimer executing;19.//递归深度20.int recursionDepth = 0;21. };22. 23. //获取指定which类型的工作线程相关运行时间,24. //例如Running代表线程总运行时间(等待数据+任务处理)25. //Executing只包含执行task任务的时间26. TickSource::Tick ServiceExecutorAdaptive::_getThreadTimerTotal(ThreadTimer which) const {27.//获取一个时间嘀嗒tick28.TickSource::Tick accumulator;29.//先把已消耗的线程的数据统计出来30.switch (which) {31.//获取生命周期已经结束的线程执行任务的总时间(只包括执行任务的时间)32.case ThreadTimer::Running:33.accumulator = ();34.break;35.//获取生命周期已经结束的线程整个生命周期时间(包括空闲时间+执行任务时间)36.case ThreadTimer::Executing:37.accumulator = ();38.break;39.}40.//然后再把统计当前正在运行的worker线程的不同类型的统计时间统计出来41.stdx::lock_guard lk(_threadsMutex);42.for (auto& thread : _threads) {43.switch (which) {44.//获取当前线程池中所有工作线程执行任务时间45.case ThreadTimer::Running:46.accumulator += ();47.break;48.//获取当前线程池中所有工作线程整个生命周期时间(包括空闲时间+执行任务时间)49.case ThreadTimer::Executing:50.accumulator += ();51.break;52.}53.}54.//返回的时间计算包含了已销毁的线程和当前正在运行的线程的相关统计55.return accumulator;56. }
- 模糊pid和神经网络pid对比,基于神经网络的PID控制
- Demigod设计师的崛起
- UE4改变摄像机的距离
- 关于小神龙大功夫的介绍 小神龙大功夫
- python简单绘图教程视频_python 简单的绘图工具turtle使用详解
- 工业设计:点石成金的“金手指”
- 敖厂长的真名是什么?
- 地栽桔子树怎么养
- 葱兰种植密度?
- UWB和GPS人员定位调研