thread ... endPrimitive operations block until their arguments are sufficiently instantiated for the operation to be performed. For example:
declare X = Y + 12
blocks until Y
becomes instantiated. We say that it
suspends on variable Y
. This is known as
data-flow synchronization.
The entire thread on which the operation executes suspends on
variable Y
:
declare X = thread Y + 12 end