A telecommunications system having a software dispatcher is provided for
delivering messages between dispatcher clients, i.e., software subsystems
that may be in the same process, a different process, or on a different
machine. The dispatcher manages a pool of threads to balance the
workload. The dispatcher can process both synchronous and asynchronous
messages by dispatching the message to all registered subsystems in order
of their registered priority.