TaskScheduler的分析_2
来源:互联网 发布:js currenttarget id 编辑:程序博客网 时间:2024/05/16 16:03
前面说到了 在 TaskScheduler中可能包含3个链表。
然后我们继续看TaskScheduler的子类 BasicTaskScheduler就可以到里面有一个这个成员变量:
DelayQueuefDelayQueue;
fDelayQueue就是我们前面说的其中一个链表,这个链表是跟DelayedTask相关的。
然后我们来继续看DelayQueue这个链表类,它的节点是DelayQueueEntry。这是一个双向、循环列表,所以每个节点必须包含其前后节点的指针。
在源码里面DelayQueueEntry的结构是这样的:
private:
friend class DelayQueue;
DelayQueueEntry* fNext;
DelayQueueEntry* fPrev;
DelayInterval fDeltaTimeRemaining;
long fToken;
staitc long tokenCounter;
public:
virtual void handleTimeOut();
这个节点里面内容有2个:
fDeltaTimeRemaining,这是一个跟时间相关的类,在这里我们完全可以把它当成一个long型数据。
fToken,则可以看作是一个标识码,不同的DelayQueueEntry对应不同的数字,它是通过tokenCounter对它赋值的。
然后里面有个函数 handleTimeOut这个函数代表如果 时间到了(fDeltaTimeRemaining==0)或者超时了要进行什么操作,这个操作是由它的子类来完成的。
然后我们再回来看DelayQueue这个链表,它包含一个表头,表头的前后指针都指向自己,fDeltaTimeRemaining为无限大。fToken应该为1.
链表有些操作,不外乎是 添加和删除节点,然后是更新节点。
所以前面说的3个函数:
scheduleDelayedTask
unscheduleDelayedTask
rescheduleDelayedTask
就是添加和删除链表的节点了,淡然这里面节点不是基类DelayQueueEntry而是它的子类: AlarmHandler,这个类主要重写了handleTimeOut这个函数,在这个函数里面表明如果超时了 就执行一个对应的函数,函数以及函数的参数由scheduleDelayedTask的参数给出。
- TaskScheduler的分析_2
- TaskScheduler的分析_1
- TaskScheduler的分析_3
- TaskScheduler的分析_4
- Groupsock的分析_2
- Spark分析之TaskScheduler
- TaskScheduler
- Spark的TaskScheduler和DagScheduler
- Spark的TaskScheduler和DagScheduler
- Spark的TaskScheduler和DagScheduler
- DAGScheduler 和 TaskScheduler 的关系
- Spark Core Runtime分析: DAGScheduler, TaskScheduler, SchedulerBackend
- Spark Core Runtime分析: DAGScheduler, TaskScheduler, SchedulerBackend
- Spark Core Runtime分析: DAGScheduler, TaskScheduler, SchedulerBackend
- Spark Core Runtime分析: DAGScheduler, TaskScheduler, SchedulerBackend
- Spark源码分析之Scheduler模块(TaskScheduler)
- Spark Core Runtime分析: DAGScheduler, TaskScheduler, SchedulerBackend
- spark调度分析: DAGScheduler, TaskScheduler, SchedulerBackend
- JDK环境变量的设置(XP与Linux)
- C#中两个类之间有继承关系时的执行顺序~
- xp安装Oracle图解
- Apache和Mysql的并发配置
- struts中接收参数时遇到的问题
- TaskScheduler的分析_2
- 参考大全
- Request对象的所有的方法
- 基于VC++的GDI常用坐标系统及应用
- 《Windows CE 大排档》封面和封底出炉啦!
- jav中jar包的MANIFEST.MF
- 关于命令行中mysql中文乱码以及不能插入中文数据的问题
- 提高 Web 应用程序安全性:威胁和对策
- SQL中海量数据处理(查询、删除)