Debugging concurrent processes: a case study
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
A methodology for implementing highly concurrent data structures
PPOPP '90 Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
An exercise in proving parallel programs correct
Communications of the ACM
A new solution of Dijkstra's concurrent programming problem
Communications of the ACM
Solution of a problem in concurrent programming control
Communications of the ACM
Locking without blocking: making lock based concurrent data structure algorithms nonblocking
PODS '92 Proceedings of the eleventh ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
Low-overhead scheduling of nested parallelism
IBM Journal of Research and Development
Simple, fast, and practical non-blocking and blocking concurrent queue algorithms
PODC '96 Proceedings of the fifteenth annual ACM symposium on Principles of distributed computing
A Nonblocking Algorithm for Shared Queues Using Compare-and-Swap
IEEE Transactions on Computers
Using elimination to implement scalable and lock-free FIFO queues
Proceedings of the seventeenth annual ACM symposium on Parallelism in algorithms and architectures
Verifying safety properties of concurrent heap-manipulating programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
OPODIS'07 Proceedings of the 11th international conference on Principles of distributed systems
Brief announcement: an asymmetric flat-combining based queue algorithm
Proceedings of the 2013 ACM symposium on Principles of distributed computing
Hi-index | 0.00 |
The shared queue is a paradigm of concurrent processes. Because shared queues are central to many multiprocessor systems, their implementations require correctness and efficiency. We present a Compare-and-Swap shared-queue algorithm that permits concurrent access and is nondelaying, in that no processor need wait for an action by another processor. We present a verification method that analyzes the states of the shared data-structure. By drawing a graph that incorporates in a simple way the effects of multi-processor interleaving, one can quickly find errors in an algorithm or produce a proof of correctness. Since enqueue and dequeue operations may begin at any time, concurrent queue operations are represented by providing, in each state of the shared data-structure, one transition that initiates an enqueue operation and another transition for a dequeue operation. The method is a practical one that is applicable to a variety of algorithms that use shared data-structures.