那么我想要的是处理a以广播消息将过程b传播到D。正确的做法似乎是在A和进程B到D之间具有频道,然后将相同的消息从B到D发送给每个过程的每个过程,如下所示。
chanA2B ! message
chanA2C ! message
chanA2D ! message
这是模仿Promela广播的正确方法,还是有适当的操作员?
promela中没有'广播';所有频道都是点对点。
您希望广播是原子能
atomic { a2b ! msg; a2c ! msg; a2d ! msg }
然后,a
Proctype可以阻止任何两个发送之间。您可能会尝试:
atomic { !nfull(a2b) && !nfull(a2b) && !nfull(a2c) -> a2b ! msg; …}
我认为,由于布尔谓词是一个单个表达式,当它是真正的所有队列都有空间,因此随后的发送将是真正的原子。