17 任务调度相关类综述——Live555源码阅读(一)任务调度相关类
这是Live555源码阅读的第二部分,包括了任务调度相关的三个类。任务调度是Live555源码中很重要的部分。
本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/
本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso
任务调度是Live555源码中很重要的部分。前面介绍的基本组件类在这里都用到了。
任务调度部分有三个类,其有继承关系。
抽象基类 TaskScheduler
派生出 BasicTaskScheduler0
,BasicTaskScheduler0
再派生出 BasicTaskScheduler
。
TaskScheduler主要是一些接口的定义。#
BasicTaskScheduler0
主要实现了触发事件的管理。触发事件其主要有三个要素,分别是触发调用函数,数据参数,和等待触发掩码。其中触发调用函数地址保存在函数指针数组中(触发函数类型是:void TaskFunc(void* clientData)
),数据参数保存在数据参数指针数组里(void*),等待触发掩码
是用于控制其在doEventLoop
调用的SingleStep
中是否被触发的标识。
BasicTaskScheduler
是任务调度器的最终成果。它包含了上述两者,并加入了延时队列DelayQueue
和处理程序链表HandlerSet
成员。在SingleStep
中使用了select
非阻塞I/O模型来进行处理fHandlerSe
t链表中的处理程序对象。fHandlerSet
中的链表节点成员是HandlerDescriptor
对象类型,其有四个重要的成员(socketNum/conditionSet/handlerProc/clientData)
,在前面介绍过,这里再提一下。socketNum
用来标识节点,在这里应当会赋予一个网络socket
套接口给它;handlerProc
是调用的函数的地址,其类型是TaskScheduler::BackgroundHandlerProc*
,而BackgroundHandlerProc
的类型是void BackgroundHandlerProc(void* clientData, int mask)
,所以其是一个类成员函数指针类型 。clientData
和conditionSet
都是其参数,其中conditionSet
是用于socketNum
的读、写、异常操作的的掩码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理