Distributed queuing is a fundamental coordination problem, arising in a variety of applications, including distributed shared memory, distributed directories, and totally ordered multicast. A distributed queue can be used to order events, user operations, or messages in a distributed system. ∗ A preliminary version of this article has appeared in the Proceedings of the 15th International Symposium on Distributed Computing (DISC) 2001, pages 209–223 † Contact Author 1