A communications multiplexor includes dispatcher processes for monitoring
client connections. The dispatcher processes detect activity on those
connections, and then pass active physical (client) connections to agent
processes for servicing. Transfer is done through specific connection
queues that are associated with a set of agents. A multi-queuing
structure permits pooling of agents on a set of shared resources thereby
reducing time required to switch between different client connections.
After an agent has serviced a given connection, the agent returns that
connection to the agent's dispatcher (there is a static assignment
between connections and dispatchers), and then reads the next unit of
work from the agent's associated connection queue. This structure may be
scalable while allowing optimal performance when passing physical
connections between processes.