The concurrency inherent to distribution may need to be simulated,
in the scope of every process within which several operations are
simultaneously active. A request broker (to borrow the CORBA
terminology; Meyer used dispatcher; I formerly used
scheduler) must then be used to select one from all
operations that are ready to proceed.
The interface between operations and the broker only depends on
the broker, not on the type of the operations. An existing broker,
such as e.g. the X main loop, may be used. An interface to the broker
is only needed at the lowest level, i.e. for instantiable operation
classes: abstract operations, actually defining the application domain
types, do not need any. Therefore, the broker remains hidden and will
be ignored in the following sections.
Note: This is not to say that the choice of the broker is
indifferent: clearly, a broker which would accept registrations but
never actually schedule any operation would not be satisfying for many
implementation. A non-preemptive FIFO queue (first-in, first-out) with
a bounded delay is an example of a sufficient acceptable
specification.