1.什么是前瞻量?
前瞻量(Lookahead),是时间调节的联邦成员在设置其时间管理机制为时间调节时所指定的一个时间段。在餐馆联邦中,前瞻量必须为正值。然而,事实上前瞻量在某些情况下,可以甚至需要设置为0。我们将在之后详细介绍使用零前瞻量的情形。
2.为什么需要前瞻量?
之所以引入前瞻量,是为了避免死锁的出现。比如有一个采用保守机制的联邦,它有2个联邦成员A和B,A和B都是既时间受限又时间调节,且没有前瞻量。这样,当A和B都到达某一时刻T时,将导致A和B的仿真时间都不能超过T。比如,A的仿真时间超过了T到达T1,这时候B还处于T,因此B有可能会向A发出时间戳为T的事件,这将导致A收到过去发生的事件,这在保守的联邦机制中是不被允许的。同理,B的仿真时间也不能超过T,这样会导致A和B都不能向前推进仿真时间,相互等待,形成死锁。
解决死锁,有两种方法:
一是采用优化的联邦机制,允许联邦成员收到过去发生的事件,当这种情况发生时,该联邦成员必须回退到该过去事件的时间点,关于这种方法,我在以后的文章中会详细介绍。
二是引入前瞻量。前瞻量其实就是联邦成员对RTI提出的一种保证,其保证不发出时间点在前瞻量范围内的事件,这样其他的联邦成员可以不必担心