这是Live555源码阅读的第二部分,包括了任务调度相关的三个类。任务调度是Live555源码中很重要的部分。

本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso/
本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso

任务调度是Live555源码中很重要的部分。前面介绍的基本组件类在这里都用到了。
任务调度部分有三个类,其有继承关系。
抽象基类TaskScheduler 派生出 BasicTaskScheduler0BasicTaskScheduler0 再派生出BasicTaskScheduler

TaskScheduler主要是一些接口的定义。

BasicTaskScheduler0主要实现了触发事件的管理。触发事件其主要有三个要素,分别是触发调用函数,数据参数,和等待触发掩码。其中触发调用函数地址保存在函数指针数组中(触发函数类型是:void TaskFunc(void* clientData)),数据参数保存在数据参数指针数组里(void*),等待触发掩码是用于控制其在doEventLoop调用的SingleStep中是否被触发的标识。

BasicTaskScheduler是任务调度器的最终成果。它包含了上述两者,并加入了延时队列DelayQueue和处理程序链表HandlerSet成员。在SingleStep中使用了select 非阻塞I/O模型来进行处理fHandlerSet链表中的处理程序对象。fHandlerSet中的链表节点成员是HandlerDescriptor对象类型,其有四个重要的成员(socketNum/conditionSet/handlerProc/clientData),在前面介绍过,这里再提一下。socketNum用来标识节点,在这里应当会赋予一个网络socket套接口给它;handlerProc是调用的函数的地址,其类型是TaskScheduler::BackgroundHandlerProc*,而BackgroundHandlerProc的类型是void BackgroundHandlerProc(void* clientData, int mask),所以其是一个类成员函数指针类型 。clientDataconditionSet都是其参数,其中conditionSet是用于socketNum的读、写、异常操作的的掩码。

17 任务调度相关类综述——Live555源码阅读(一)任务调度相关类相关推荐

  1. 16 BasicHashTable基本哈希表类(三)——Live555源码阅读(一)基本组件类

    这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso ...

  2. 12 哈希表相关类——Live555源码阅读(一)基本组件类

    12 哈希表相关类--Live555源码阅读(一)基本组件类 这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 ...

  3. 18 TaskScheduler任务调度器抽象基类——Live555源码阅读(一)任务调度相关类

    这是Live555源码阅读的第二部分,包括了任务调度相关的三个类.任务调度是Live555源码中很重要的部分. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/ol ...

  4. 24 UsageEnvironment使用环境抽象基类——Live555源码阅读(三)UsageEnvironment

    24 UsageEnvironment使用环境抽象基类--Live555源码阅读(三)UsageEnvironment 24 UsageEnvironment使用环境抽象基类--Live555源码阅读 ...

  5. 39 网络相关函数(七)——live555源码阅读(四)网络

    39 网络相关函数(七)--live555源码阅读(四)网络 39 网络相关函数(七)--live555源码阅读(四)网络 简介 14)readSocket从套接口读取数据 recv/recvfrom ...

  6. Live555源码阅读笔记(一):源码介绍文档 及 源码目录结构

    目录 一.Live555介绍 1.Live555项目介绍 2.官网及帮助文档介绍 二.源码目录结构 1.UsageEnvironment 2.BasicUsageEnvironment 3.group ...

  7. Live555源码阅读笔记(四):groupsock 目录详解

    一.groupsock 目录介绍 groupsock 目录总共有16个源码文件,编译后生成 libgroupsock.a,这个库中的类封装了网络接口和套接字,特别是"Groupsock&qu ...

  8. java常用类介绍及源码阅读(ArrayList)

    java.util  类 ArrayList<E> 继承关系: java.lang.Objectjava.util.AbstractCollection<E>java.util ...

  9. java常用类介绍及源码阅读(LinkedList)

    java.util  类 LinkedList<E> java.lang.Objectjava.util.AbstractCollection<E>java.util.Abst ...

最新文章

  1. TensorFlow与OpenCV,读取图片,进行简单操作并显示
  2. 从零实现一个http服务器
  3. 4加密问题漏洞修复_Apache Shiro 反序列化漏洞实战
  4. java 通过JLayeredPane实现背景图上添加其他控件
  5. (90)FPGA仿真计数器激励
  6. .Net Core DI,如何在程序集中注册所有现有的可分配类型
  7. 用java制作心理测试软件_Java 程序员必备的10款开源工具
  8. pat04-树7. Search in a Binary Search Tree (25)
  9. 8.大数据架构详解:从数据获取到深度学习 --- 机器学习和数据挖掘
  10. IEC103规约报文举例
  11. stm32F407 + FreeRTOS + FAT 文件系统移植
  12. Python爬虫与数据可视化案例(共享源码)
  13. 博弈论(Game Theory)入门——完全信息静态博弈
  14. 研调:2018年40%智能手机将用柔性面板
  15. 方根法公式_(完整word版)层次分析法中用方根法计算权重在Excel中的具体操作
  16. ubuntu下配置msmtp+mutt发送邮件
  17. 【人工智能】机器人的未来发展:从工业自动化到知识自动化
  18. 蓝桥杯-第九届决赛——整理玩具
  19. word中如何在表格上方加入一行以及英文如何设置自动断字
  20. 常见笔试题:根据值对字典进行排列。

热门文章

  1. 月薪11.5K 土木人零基础转行软件测试工程师,他都经历了什么?
  2. kafka sasl java_kafka 添加SASL鉴权
  3. MATLAB 添加文件路径
  4. mysql 优化关键字_Mysql之Explain关键字及常见的优化手段
  5. oracle数据库exp权限,exp/imp 权限问题及其知识拓展
  6. pdf php 添加元数据,PDF怎么添加/清除元数据-PDF添加/清除元数据的方法 - 河东软件园...
  7. dell 虚拟linux,戴尔:Linux是轻松构建虚拟主机的关键
  8. linux python指令大全,Linux常用指令
  9. pythonunicode和str_python2 中 unicode 和 str 之间的转换及与python3 str 的区别
  10. Python爬虫编程实践 Task04