zoukankan      html  css  js  c++  java
  • 17 任务调度相关类综述——Live555源码阅读(一)任务调度相关类

    这是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的读、写、异常操作的的掩码。

    BasicTaskScheduler

  • 相关阅读:
    Python-模块
    POJ 1631 nlogn求LIS
    POJ 1274 二分图匹配
    POJ 3661 DP
    POJ 3662 二分+Dijkstra
    POJ 3666 DP
    POJ 2373 单调队列优化DP
    祝自己生日快乐
    POJ 2385 DP
    POJ 3122 Pie 二分答案
  • 原文地址:https://www.cnblogs.com/oloroso/p/4599872.html
Copyright © 2011-2022 走看看