A: if
:: q?a -> ...
:: else -> ...
fi
请注意,这种类型的代码内置了竞争条件。例如,在决定消息接收操作将不可执行之前,该进程应该等待多长时间?可以通过使用消息轮询操作来避免该问题,例如,如下所示:
以上引用来自http://spinroot.com/spin/Man/else.html
我无法理解这种论点。只是 Spin 可以决定q?a
:如果q
是空的,那么它是可执行的。否则,它正在阻塞。
给定的参数引发了竞争条件。
但是,我可以提出同样的论点:
byte x = 1;
A: if
:: x == 2 -> ...
:: else -> ...
fi
从 Spin 的角度来看,这没问题。但是,我在问,例如,在决定 的值x
不会被其他进程增加之前,该进程应该等待多长时间?