Select 选择输出块

Select 选择输出块,select,output,Select,Output,我有一个队列,其中有两个延迟,我想获取项目。我在队列和延迟之间放置了一个SelectOutput块,我希望将队列中的项目交替分配给两个延迟。更详细地说,当队列中有四个项目时,一个项目被引导(拉入)其中一个延迟,另一个(FIFO)进入另一个延迟,当一个延迟完成时,它拉入第三个项目,当另一个延迟完成时(或第一个,如果它更快),它拉入最后一个项目 我试着用两种方式来实现上述目标。首先,我选择了概率(0.5)。我使用的另一种方法是有条件地选择第一个延迟,当另一个延迟不为空时选择第一个延迟 然而,在这两种

我有一个队列,其中有两个延迟,我想获取项目。我在队列和延迟之间放置了一个SelectOutput块,我希望将队列中的项目交替分配给两个延迟。更详细地说,当队列中有四个项目时,一个项目被引导(拉入)其中一个延迟,另一个(FIFO)进入另一个延迟,当一个延迟完成时,它拉入第三个项目,当另一个延迟完成时(或第一个,如果它更快),它拉入最后一个项目

我试着用两种方式来实现上述目标。首先,我选择了概率(0.5)。我使用的另一种方法是有条件地选择第一个延迟,当另一个延迟不为空时选择第一个延迟

然而,在这两种情况下,我观察到队列中可能有许多项,延迟为空,但不能选择

为什么延迟块不把其中一个项目拉进去

有没有关于我如何将项目发送到任何延迟为空的项目的想法


谢谢。

我调查了一下,我想我找到了解决办法。下面是: 在包含未拉动项目的队列之后,放置两个块;一次延迟,持续时间非常小(固定),并有一个保持块。这两个块也位于SelectOutput块的后面。 插入的延迟会拉入一个项目,并且保持块在满足其中的条件之前不允许继续(即,保持块在“推”状态下等待)。(保持)条件是,随后的两个延迟都具有size()>0(Delay1.size()>0和Delay2.size()>0)(注意:请注意该条件中的单个&条件。它确保如果满足第一个条件,则还将检查第二个条件)。这将保留该项,直到后续项的延迟为空,如果为真,则允许该项进入SelectOutput块。然后,SelectOutput块根据以下条件指示项目:Delay1.size()>0。 现在,只要保持块条件发生相对变化,就需要重新评估保持块条件。为了安全起见,我在等待之前对延迟的On-enter和On-exit操作以及随后的两个延迟(hold.RecreacteConditions();)进行了以下检查