SPECIFICATION producer_consumer (delay: number) : NOEXIT
TYPE Integers
BEHAVIOUR
HIDE send, recv IN
( producer [send] (one)
|[]|
consumer [recv]
)
|[send, recv]|
( HIDE chan IN
fast_buffer [send, chan]
|[chan]|
slow_buffer [chan, recv] (delay)
)
WHERE
PROCESS producer [send] (n: number) : NOEXIT
PROCESS consumer [recv] : NOEXIT
PROCESS fast_buffer [get, put] : NOEXIT
PROCESS slow_buffer [get, put] (delay: number) : NOEXIT
ENDSPEC