Room synchronizations

We present a class of synchronization called room synchronizations and show how this class can be used to implement asynchronous parallel queues and stacks with constant time access (assuming a fetch-and-add operation). The room synchronization problem involves supporting a set of m mutually exclusive “rooms” where any number of users can execute code simultaneously in any one of the rooms, but no two users can simultaneously execute code in separate rooms. Users asynchronously request permission to enter specified rooms, and neither the arrival time nor the arrival order nor the desired room of such requests are known ahead of time. We describe an algorithm for room synchronizations, and prove it satisfies a number of desirable properties. We have implemented our algorithm on a Sun UltraEnterprise 10000 multiprocessor. We present experimental results comparing an implementation of a parallel stack using room synchronizations to one using locks, demonstrating a significant scalability advantage for room synchronizations.

[1]  Leslie Lamport,et al.  A new solution of Dijkstra's concurrent programming problem , 1974, Commun. ACM.

[2]  Larry Rudolph,et al.  Basic Techniques for the Efficient Coordination of Very Large Numbers of Cooperating Sequential Processors , 1983, TOPL.

[3]  Maurice Herlihy,et al.  Axioms for concurrent objects , 1987, POPL '87.

[4]  Allan Borodin,et al.  Distributed FIFO allocation of identical resources using small shared space , 1985, TOPL.

[5]  Leslie G. Valiant,et al.  A bridging model for parallel computation , 1990, CACM.

[6]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[7]  Maurice Herlihy,et al.  Wait-free synchronization , 1991, TOPL.

[8]  Seif Haridi,et al.  Distributed Algorithms , 1992, Lecture Notes in Computer Science.

[9]  Maurice Herlihy,et al.  Lock-Free Garbage Collection for Multiprocessors , 1992, IEEE Trans. Parallel Distributed Syst..

[10]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.

[11]  Greg Barnes,et al.  A method for implementing lock-free shared-data structures , 1993, SPAA '93.

[12]  John D. Valois Implementing Lock-Free Queues , 1994 .

[13]  Nir Shavit,et al.  Elimination trees and the construction of pools and stacks: preliminary version , 1995, SPAA '95.

[14]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[15]  Maged M. Michael,et al.  Simple, fast, and practical non-blocking and blocking concurrent queue algorithms , 1996, PODC '96.

[16]  John David Valois Lock-free data structures , 1996 .

[17]  Nir Shavit,et al.  Elimination Trees and the Construction of Pools and Stacks , 1997, Theory of Computing Systems.

[18]  Yossi Matias,et al.  Can shared-memory model serve as a bridging model for parallel computation? , 1997, SPAA '97.

[19]  Nir Shavit,et al.  Combining funnels: a new twist on an old tale… , 1998, PODC '98.

[20]  N. Shavit,et al.  Combining Funnels , 1998 .

[21]  Effective fine-grain synchronization for automatically parallelized programs using optimistic synchronization primitives , 1999, TOCS.

[22]  Yossi Matias,et al.  Can shared-memory model serve as a bridging model for parallel computation? , 1997, SPAA '97.

[23]  Guy E. Blelloch,et al.  On Bounding Time and Space for Multiprocessor Garbage Collection , 1999, PLDI.

[24]  David R. Cheriton,et al.  Non-blocking synchronization and system design , 1999 .

[25]  Nir Shavit,et al.  DCAS-based concurrent deques , 2000, SPAA '00.

[26]  Guy E. Blelloch,et al.  A parallel, real-time garbage collector , 2001, PLDI '01.