Selecting Locking Primatives for Parallel Programming.

Gespeichert in:
Bibliographische Detailangaben
Titel: Selecting Locking Primatives for Parallel Programming.
Autoren: McKenney, Paul E.1 mckenney@sequent.com
Quelle: Communications of the ACM. Oct96, Vol. 39 Issue 10, p75-82. 8p. 6 Charts.
Schlagwörter: *PARALLEL programming, *SYSTEMS design, *COMPUTER software development, *SOFTWARE engineering, *PROGRAMMING languages, DISTRIBUTED operating systems (Computers), SOFTWARE patterns
Abstract: The article describes a pattern language, which helps select synchronization primitives for parallel computer programs, avoiding primitives that interact with a given program's locking design. A lock-based parallel program uses synchronization primitives to guard critical sections of code in which only one CPU or thread may execute concurrently. A poor choice of locking primitive can result in excessive overhead and poor performance under heavy load. The pattern language in this article helps select one of a few straightforward test-and-set, queued, and reader/writer locks. These locks handle most situations. The article presents the implementation-level counterpart to a locking design pattern language. Although design and implementation are often treated as separate activities, they are almost always deeply intertwined. The test-and-set lock and the queued lock provide simple mutual exclusion. The two types of queued lock tolerate extreme contention without imposing excessive memory bandwidth loads on the system bus. The three types of reader/writer lock allow readers to proceed in parallel. The distributed reader/writer lock operates efficiently in the face of high read-side contention and fine-grained parallelism.
Datenbank: Business Source Index
Beschreibung
Abstract:The article describes a pattern language, which helps select synchronization primitives for parallel computer programs, avoiding primitives that interact with a given program's locking design. A lock-based parallel program uses synchronization primitives to guard critical sections of code in which only one CPU or thread may execute concurrently. A poor choice of locking primitive can result in excessive overhead and poor performance under heavy load. The pattern language in this article helps select one of a few straightforward test-and-set, queued, and reader/writer locks. These locks handle most situations. The article presents the implementation-level counterpart to a locking design pattern language. Although design and implementation are often treated as separate activities, they are almost always deeply intertwined. The test-and-set lock and the queued lock provide simple mutual exclusion. The two types of queued lock tolerate extreme contention without imposing excessive memory bandwidth loads on the system bus. The three types of reader/writer lock allow readers to proceed in parallel. The distributed reader/writer lock operates efficiently in the face of high read-side contention and fine-grained parallelism.
ISSN:00010782
DOI:10.1145/236156.236174