0

这个问题有点哲学,就像“数据和代码是否相同”。

事件(信号)和状态之间有什么明显的区别吗?

例子:

例如,有一辆汽车经过马路。当汽车按喇叭时,一个man_A过马路的人 ( ) 突然停下来。喇叭是信号,“man_A突然停止”是状态man_A

另一个人(man_B)也在同一时间,同一地点过马路。

让我们认为那man_B是聋子,所以他听不到喇叭。但意识到“man_A突然停止”对他来说是一个信号。他会突然停下来,仿佛听到喇叭声。

所以我会说“一个状态可能是另一个进程的信号。一个信号将一个进程置于另一个状态。这就是为什么它们完全相同的原因”

我错了,它们之间有明显的区别吗?

信号是状态变化。我们可以定义具有两种状态的任何信号。

4

2 回答 2

1

它们非常非常不同:

  • 同一事件可能会导致转换到不同的状态,具体取决于当前状态:
    三个状态之间有转换,由同一事件触发

  • 在 SCXML 中,您可以拥有<parallel>定义正交区域的状态。在这种情况下,单个事件可能会触发多个同时转换到不同状态:
    在此处输入图像描述

  • 此外,由于可能存在cond="…"属性,当由事件触发时,可能会或可能不会发生到另一个状态的转换。所以现在我们有一个可能不会改变状态的事件。

  • 此外,可能有没有event属性的转换,一旦某些数据模型值或脚本结果正确,就会导致状态更改。所以现在我们有了一个可以在没有触发事件的情况下发生的状态变化。

于 2014-04-16T19:57:05.443 回答
0

好吧,状态不是信号,因为信号出现在某个特定的时间点。

状态变化是信号的结果,可以将其本身视为信号。但它不是国家本身。信号早已消失后,状态继续存在。

例如,初始状态如何成为信号。

于 2014-04-12T15:46:35.773 回答