每隔(t总=t0+t1+t2)时间入队,每隔t3时间出队。
如果t总>t3,则系统启动后,队列里会积累几帧数据,此时出队,拿到数据会比价快,但是很快队列会变空,再去拿数据需要等待,等有帧入队了才能拿到数据。
如果上次拿数据的时候队列是空的,那么等待一段时间后有帧入队了,立刻出队,经过t3再去拿,此时队列里还没有数据,需要等待(t总-t1)时间,这是等待情况中等的最长时间。如果去拿的时候队列里有数据,那么几乎立刻可以拿到数据出队,等待时间几乎为0。
如果t总<t3,则队列很快会满,再有新帧入队时,队列里的旧帧会被覆盖,这种情况每次去拿数据出队的时候不需要等待,但是拿到的数据也许就不是上一次拿到数据的下一帧了,即跳帧情况。
另一个问题:
如果是DUP之外的情况,两个模块之间需要队列,一般不用新帧入队覆盖旧帧这种方式,使用以下方式:假设队列长度为2,那么当队列满了之后,就不再入队,自动舍弃新帧,这种情况当t总<t3时,就会拿到连续的两帧,如第一次出队拿到第1帧,第二次出队拿到第二帧,第三出队拿到第7帧,第四次出队拿到第8帧,即第3,4,5,6帧被舍弃掉了。