If you do not consider all inputs in parallel, then you consider them in a sequential order. However, as we have to use a blocking read method, it may happen that the buffer that is read first is empty and therefore the reaction cannot take place. Note that the first three actions allow that x3, x1, and x2, respectively may be empty.
If you check the input buffers instead in parallel, you can decide which one of the five actions has to be applied, so that the process can proceed and can implement that function. This is however, not possible with a sequential behavior.