A simple Mux creates glitches if the select changes while clocks are high. This design uses a Mutual Exclusion Handshake.
1. When switching, the active path (e.g. A) must first see the change and disable itself on the next falling edge.
2. The second path (B) waits for A's enable to go low (via feedback) before it activates itself on its own falling edge.