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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容