RTI 1.3目前支持两种模式,一种是轮询模式,一种是异步模式,无论在那种模式下LRC都要做大量工作,比如和其他的联邦成员的LRC交换信息,完成这些工作需要一定时间,tick()函数就是为了给RTI提供这个时间。
轮询模式:联邦成员和RTI共享单独一个线程,只有当联邦成员调用tick()函数时,RTI才能工作,在这种模式下如果RTI大使没有调用足够多的tick()函数,RTI可能没有足够多的时间来处理它的内部工作:轮询模式例子如下:
异步I/O模式:RTI使用一个单独的内部线程,该线程周期性地唤醒RTI,以判断是否可以执行RTI内部操作,因此在异步I/O模式下只有当联邦准备处理回调函数时才需要调用tick()函数。异步模式例子如下:
时间推进:
(1) 在联邦中,时间不受限成员能够自由地推进仿真时间。如成员1和成员6能够以它们希望的速度来推进时间,不受其他成员的限制。
(2) 受限成员的推进时间不能够超出它们当前的LBTS,一个给定成员的LBTS是通过RTI计算一个成员从其他控制成员收到的最早可能发生的消息来决定的,垂直的虚线表示了时间控制成员产生的最早的TSO消息(当前时间加上前瞻量)。在受限成员3,4,5的时间轴的下面,有一条从t=0开始的水平线标明的各自的LBTS,可以看到,成员3可以推进到的下一个时间步长,因为推进后的时间仍然在它的LBTS内,但是成员4和成员5不能推进到下一个时间步长,否则就超出了它们各自的LBTS值。