A Methodology for Implementing Highly Concurrent Data Objects

271Citations
Citations of this article
1.2kReaders
Mendeley users who have this article in their library.

Abstract

A concurrent object is a data structure shared by concurrent processes. Conventional techniques for implementing concurrent objects typically rely on critical sections; ensuring that only one process at a time can operate on the object. Nevertheless, critical sections are poorly suited for asynchronous systems: if one process is halted or delayed in a critical section, other, nonfaulty processes will be unable to progress. By contrast, a concurrent object implementation is lock free if it always guarantees that some process will complete an operation in a finite number of steps, and it is wait free if it guarantees that each process will complete an operation in a finite number of steps. This paper proposes a new methodology for constructing lock-free and wait-free implementations of concurrent objects. The object's representation and operations are written as stylized sequential programs, with no explicit synchronization. Each sequential operation is atutomatically transformed into a lock-free or wait-free operation using novel synchronization and memory management algorithms. These algorithms are presented for a multiple instruction/multiple data 1993 architecture in which n processes communicate by applying atomic read, write, load_linked, and store_conditional operations to a shared memory. © 1993, ACM. All rights reserved.

Cite

CITATION STYLE

APA

Herlihy, M. (1993). A Methodology for Implementing Highly Concurrent Data Objects. ACM Transactions on Programming Languages and Systems (TOPLAS), 15(5), 745–770. https://doi.org/10.1145/161468.161469

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free