首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SelectOutput块

SelectOutput块
EN

Stack Overflow用户
提问于 2020-02-07 05:41:14
回答 1查看 19关注 0票数 0

我有一个队列,有两个我想要取的东西的延迟。我在队列和延迟之间放置了一个SelectOutput块,我想强制队列中的项对这两个延迟进行交替分布。更详细地说,当队列中有例如四个项目时,一个被引导(拉)在一个延迟内,另一个(FIFO)被引导到另一个延迟,当延迟完成时,它拉出第三项,并且当另一个延迟结束时(或者,如果它更快,第一个延迟结束),那么它拉入最后一个项。

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

然而,无论以哪种方式,我都观察到队列中可能有许多项,延迟为空但不被选择。

为什么延迟块不拉入其中一项呢?

有没有什么想法可以让我的物品在任何延迟是空的情况下都去呢?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-02-08 16:39:05

我查过了,我想我找到了一条路。它是这样的:在保存未被拉出的项的队列之后,放置两个块;一个延迟,具有非常小的(固定)持续时间和一个保持块。这两个块也位于SelectOutput块的后面。插入的延迟拉入项中,并且保持块不让其继续进行(即,使其处于“推”状态),直到满足其中的条件为止。(保持)条件是随后的两个延迟都具有size() >0 (Delay1.size() >0& Delay2.size() > 0) (注意:注意条件中的单个&。它确保如果满足第一个条件,则还会检查第二个条件)。这将保留该项,直到随后的延迟为空,当为真时,它会让该项继续到SelectOutput块。然后,SelectOutput块根据以下条件定向项目: Delay1.size() > 0。现在,只要对其条件进行了相对更改,就需要重新评估Hold块条件。为了安全起见,我在保留之前的延迟的On enter和On exit操作以及随后的两个延迟(hold.recalculateConditions();)中进行了以下检查

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60103965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档