NS3 Timer类说明

官方文档介绍

一个简单的Timer类。
定时器用于将延迟保持在一起,延迟到期时调用的函数以及延迟到期时传递给函数的一组参数。
定时器可以暂停,恢复,取消并查询剩余时间,但不能扩展(除了暂停和恢复)。
也可以使用定时器来执行一组预定义的事件生命周期管理策略。 这些政策在构造时规定,以后不能改变。

Timer类似于Simulator::Schedule完成的功能,并且,Timer的本质也是使用的就是Simulator::Schedule,只不过Timer对它做了一层封装,使用起来更加方便、明了。但是如果说代码简洁的角度来说的话,Simulator::Schedule代码更简洁。

Timer的简单使用

Timer m_nudTimer (Timer::CANCEL_ON_DESTROY);
if (m_nudTimer.IsRunning ())
    {
      m_nudTimer.Cancel ();
    }

  m_lastReachabilityConfirmation = Simulator::Now ();
  //设置回调函数
  m_nudTimer.SetFunction (Function);
  //设置时延
  m_nudTimer.SetDelay (MilliSeconds (delay));
  //启动调度
  m_nudTimer.Schedule ();

上面的代码与下面的代码等同:

Simulator::Schedule (MilliSeconds (delay), Function);

也可以设置一些参数:

Timer m_nudTimer (Timer::CANCEL_ON_DESTROY);
if (m_nudTimer.IsRunning ())
    {
      m_nudTimer.Cancel ();
    }

  m_lastReachabilityConfirmation = Simulator::Now ();
  //设置回调函数, 函数属于object对象
  m_nudTimer.SetFunction (&Function, object);
  //设置参数
  m_nudTimer.SetArguments(a1, a2, a3);
  //设置时延
  m_nudTimer.SetDelay (MilliSeconds (delay));
  //启动调度
  m_nudTimer.Schedule ();

上面的代码与下面的代码等同:

Simulator::Schedule (MilliSeconds (delay), &Function, object, a1, a2, a3);

推荐阅读更多精彩内容