In contrast to a nr-nonblocking-mixer, the environment of a Nonblocking Mixer need not guarantee mutual exclusion of the passive requests. A request on a passive port while the Nonblocking Mixer is `busy' (waiting for an acknowledge on the active port) is not lost but is handled when the Nonblocking Mixer becomes `idle' again.
When a Nonblocking Mixer receives requests on both passive ports, it will process exactly one of them (and delay the other). The specification leaves the choice open. Often there is a fairness requirement on this choice: if a choice situation arises `infinitely often' then both outputs are chosen `infinitely often'.

No information available
Specification in DI Algebra:
NAME = "Nonblocking-Mixer"
I = { r0, r1, a }
O = { a0, a1, r }
MX = M/a?
M = a?;[ r0? -> a0!; r!; M, r1? -> a1!; r!; M ]
[{r0},{a0}]
[{r1},{a1}]
[{r},{a}]
Also available through this link
The roles of ports a and b can be interchanged:
MIX(a, b; c) =
MIX(b, a; c)

No information available
No information available
The Nonblocking Mixer can be generalized to a k-nonblocking-mixer, which multiplexes k passive ports onto one active port. A Nonblocking Mixer is a Nonblocking 2-Mixer.
No information available