An apparatus, program product and method to manage access to a shared resource
by a plurality of processes in a multithreaded computer via a collection of atomic
operations that track both the order in which requests that use a shared resource
are received, and the order in which processing of such requests are completed
after they are received. Dispatching of requests is effectively deferred until
processing of all non-dispatched requests that were received earlier than a most
recently completed request has been completed. In many instances, completion of
processing of requests can be performed non-atomically, thus reducing contention
issues with respect to the shared resource. Furthermore, dispatching of requests
may be batched to reduce the overhead associated with individual dispatch operations.