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