类似于CSP的同步

时间:2019-05-28 13:13:00

标签: uppaal

我正在尝试使用类似CSP的同步机制,但我不明白为什么以下模型的初始状态是死锁:

const int N = 2;
chan a;

process Processes(int [1,N] pid) {
    state A, B;
    init A;
    trans A -> B { sync a; };
}

system Processes;

我认为这两个过程在通道“ a”上是同步的,应该至少执行一个步骤,不是吗?

1 个答案:

答案 0 :(得分:1)

系统声明需要包含IO声明:

P1=Processes(1);
P2=Processes(2);

system P1, P2;

IO P1 {a}
IO P2 {a}

不幸的是,IO声明不理解模板参数,因此我使用带有具体名称的完整实例化。

还有“ Modest”选项可启用不同的更新语义,例如:

x=y+z

使用yz的旧值(在同步之前),以防同时修改yz的情况。