NS2的调度器Scheduler调度过程(事件的执行过程)

本文详细探讨了NS2中Scheduler的工作原理,重点在于事件的调度过程。通过Schedule类的定义和链表调度器的示例,阐述了如何在事件到达其调度时间时,使用handler_进行处理,并解释了schedule()函数如何按照执行时间顺序将事件插入到队列中。
摘要由CSDN通过智能技术生成
(一)
1、Event的定义:
class Event {
public:
	Event* next_;	   //事件链表中指向的下一个事件的指针	
	Event* prev_;      //事件链表中指向的下一个事件的指针	
	Handler* handler_;     //要处理事件时调用的句柄
	double time_;		//事件的执行时间
	scheduler_uid_t uid_;	//唯一标识一个事件的id,在schedule()中初始化为1
	Event() : time_(0), uid_(0) {}    //一个事件的构造函数,初始化变量time_以及uid_
};

当事件的调度时间到达时,改时间传递该它的句柄handler_来处理。

2、Schedule类的定义:

class Scheduler : public TclObject {
public:
	static Scheduler& instance() {
		return (*instance_);		// 调度的通用入口
	}
	void schedule(Handler*, Event*, double delay);	// 调度器
	virtual void run();			// 执行调度
	virtual void cancel(Event*) = 0;	// 取消事件
	virtual void insert(Event*) = 0;	// 将事件插入调度队列中
	virtual Event* lookup(scheduler_uid_t uid) = 0;	// 查找事件
	virtual Event* deque() = 0;		/
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值