ispin在进度窗口(“模拟”选项卡上的中下部屏幕)上生成此消息: 错误:发送到未初始化的频道
奇怪的是,错误消息开始出现在模拟过程的中间(我将最大步数设置为10000,并且开始出现在6000步左右)。
怎么可能?会在模拟过程中以某种方式失去chan初始化吗?
这是我使用的渠道之一的初始化:
chan VP = [1] of {byte};
这是模拟过程中的错误消息:
答案 0 :(得分:0)
这是您遇到的错误的 mcve :
chan c;
init {
c!10;
}
产生
~$ spin test.pml
Error: sending to an uninitialized chan
timeout
Error: sending to an uninitialized chan
#processes: 1
0: proc 0 (:init::1) test.pml:4 (state 1)
1 process created
基本上,您忘记声明通道是同步还是异步,以及它应包含的消息类型。正确的频道声明应如下所示:
chan c = [N] of { type_1, ..., type_M };
其中,对于任何异步通道,N
大于或等于1
,否则0
,而type_1, ..., type_M
是类型列表(即一封邮件中包含int
,bool
)个字段。
有关更多详细信息,请访问read the documentation。