Algorithms for mutual exclusion
Algorithms for mutual exclusion
A fast mutual exclusion algorithm
ACM Transactions on Computer Systems (TOCS)
Concurrency control and recovery in database systems
Concurrency control and recovery in database systems
Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
Renaming in an asynchronous environment
Journal of the ACM (JACM)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Atomic snapshots of shared memory
Journal of the ACM (JACM)
A completeness theorem for a class of synchronization objects
PODC '93 Proceedings of the twelfth annual ACM symposium on Principles of distributed computing
Impossibility of distributed consensus with one faulty process
Journal of the ACM (JACM)
Wait-free algorithms for fast, long-lived renaming
Science of Computer Programming
Unreliable failure detectors for reliable distributed systems
Journal of the ACM (JACM)
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
Practical implementations of non-blocking synchronization primitives
PODC '97 Proceedings of the sixteenth annual ACM symposium on Principles of distributed computing
ACM Computing Surveys (CSUR)
Monitors: an operating system structuring concept
Communications of the ACM
Proceedings of the thirteenth annual ACM symposium on Parallel algorithms and architectures
Distributed Algorithms
A Practical Multi-word Compare-and-Swap Operation
DISC '02 Proceedings of the 16th International Conference on Distributed Computing
Obstruction-Free Synchronization: Double-Ended Queues as an Example
ICDCS '03 Proceedings of the 23rd International Conference on Distributed Computing Systems
Distributed Computing: Fundamentals, Simulations and Advanced Topics
Distributed Computing: Fundamentals, Simulations and Advanced Topics
Nonblocking memory management support for dynamic-sized data structures
ACM Transactions on Computer Systems (TOCS)
Using elimination to implement scalable and lock-free FIFO queues
Proceedings of the seventeenth annual ACM symposium on Parallelism in algorithms and architectures
Synchronization Algorithms and Concurrent Programming
Synchronization Algorithms and Concurrent Programming
A Universal Construction for Concurrent Objects
ARES '07 Proceedings of the The Second International Conference on Availability, Reliability and Security
How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs
IEEE Transactions on Computers
Specification and Proof Techniques for Serializers
IEEE Transactions on Software Engineering
Synchronization is Coming Back, But is it the Same?
AINA '08 Proceedings of the 22nd International Conference on Advanced Information Networking and Applications
Locks Considered Harmful: A Look at Non-traditional Synchronization
SEUS '08 Proceedings of the 6th IFIP WG 10.2 international workshop on Software Technologies for Embedded and Ubiquitous Systems
A note on atomicity: Boosting Test&Set to solve consensus
Information Processing Letters
Non-blocking Array-Based Algorithms for Stacks and Queues
ICDCN '09 Proceedings of the 10th International Conference on Distributed Computing and Networking
On the Computational Power of Shared Objects
OPODIS '09 Proceedings of the 13th International Conference on Principles of Distributed Systems
The Art of Multiprocessor Programming
The Art of Multiprocessor Programming
Contention-sensitive data structures and algorithms
DISC'09 Proceedings of the 23rd international conference on Distributed computing
On asymmetric progress conditions
Proceedings of the 29th ACM SIGACT-SIGOPS symposium on Principles of distributed computing
Communication and Agreement Abstractions for Fault-tolerant Asynchronous Distributed Systems
Communication and Agreement Abstractions for Fault-tolerant Asynchronous Distributed Systems
The x-wait-freedom progress condition
EuroPar'10 Proceedings of the 16th international Euro-Par conference on Parallel processing: Part I
The computational structure of progress conditions
DISC'10 Proceedings of the 24th international conference on Distributed computing
Formal verification of a lazy concurrent list-based set algorithm
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
The renaming problem in shared memory systems: An introduction
Computer Science Review
From unreliable objects to reliable objects: the case of atomic registers and consensus
PaCT'07 Proceedings of the 9th international conference on Parallel Computing Technologies
Looking for efficient implementations of concurrent objects
PaCT'11 Proceedings of the 11th international conference on Parallel computing technologies
Hi-index | 0.00 |
The implementation of objects shared by concurrent processes, with provable safety and liveness guarantees, is a fundamental issue of concurrent programming in shared memory systems. It is now largely accepted that linearizability (or atomicity) is an appropriate consistency condition for concurrent objects. On the liveness side, progress conditions (mainly absence of deadlock or the stronger absence of starvation) have been stated and investigated for a long time and are now well-mastered. The situation is different in asynchronous shared memory systems prone to process failures. This paper visits three progress conditions suited to concurrent objects in presence of failures, namely obstruction-freedom, non-blocking and wait-freedom. To that end, the paper also visits appropriate computation models and paradigm problems to illustrate this family of progress conditions. The paper has consequently an introductory and survey flavor. Its aim is to help people better understand the difficulties, subtleties and beauties encountered when one has to implement concurrent objects despite the net effect of asynchrony and failures.