- We study the syntax and semantics of the asynchronous model.
- We see the construction of the parallel composition.
- We discuss the challenges with shared processes and mutual exclusion.
Exercise 1

We have two output channels msg out1 and msg out2, and we have 1 input channel, msg in.
There is a single queue as state variable with the declaration who’s initialization given by: queue(msg) x := null.
Lets go through it from start to finish.
You get a message in, that is then handled by the input task Ai which stores the messages arriving on the input channel in the queue x when it isnt full: AI: NOT FULL(x) -> Enqueue(in, x)
Then the output task is enabled since x is no longer empty. It takes x and removes it from the queue and then sends it to out1
Exercise 2

Answer


Exercise 3


