Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Impossibility of distributed consensus with one faulty process
Journal of the ACM (JACM)
Unreliable failure detectors for reliable distributed systems
Journal of the ACM (JACM)
The weakest failure detector for solving consensus
Journal of the ACM (JACM)
Round-by-round fault detectors (extended abstract): unifying synchrony and asynchrony
PODC '98 Proceedings of the seventeenth annual ACM symposium on Principles of distributed computing
ACM Transactions on Computer Systems (TOCS)
Using Failure Detectors to Solve Consensus in Asynchronous Sharde-Memory Systems (Extended Abstract)
WDAG '94 Proceedings of the 8th International Workshop on Distributed Algorithms
Long-Lived Adaptive Collect with Applications
FOCS '99 Proceedings of the 40th Annual Symposium on Foundations of Computer Science
Fast Collect in the absence of contention
ICDCS '02 Proceedings of the 22 nd International Conference on Distributed Computing Systems (ICDCS'02)
The Information Structure of Indulgent Consensus
IEEE Transactions on Computers
An adaptive collect algorithm with applications
Distributed Computing
Distributed Computing
The Alpha of Indulgent Consensus
The Computer Journal
Two Consensus Algorithms with Atomic Registers and Failure Detector Ω
ICDCN '09 Proceedings of the 10th International Conference on Distributed Computing and Networking
Communication and Agreement Abstractions for Fault-tolerant Asynchronous Distributed Systems
Communication and Agreement Abstractions for Fault-tolerant Asynchronous Distributed Systems
Concurrent Programming: Algorithms, Principles, and Foundations
Concurrent Programming: Algorithms, Principles, and Foundations
Hi-index | 0.00 |
This paper presents an efficient algorithm that build a consensus object. This algorithm is based on an Ω failure detector (to obtain consensus liveness) and a store-collect object (to maintain its safety). A store-collect object provides the processes with two operations, a store operation which allows the invoking process to deposit a new value while discarding the previous value it has deposited and a collect operation that returns to the invoking process a set of pairs (i, val) where val is the last value deposited by the process pi. A store-collect object has no sequential specification. While store-collect objects have been used as base objects to design wait-free constructions of more sophisticated objects (such as snapshot or renaming objects), as far as we know, they have not been explicitly used to built consensus objects. The proposed store-collect-based algorithm, which is round-based, has several noteworthy features. First it uses a single store-collect object (and not an object per round). Second, during a round, a process invokes at most once the store operation and the value val it deposits is a simple pair 〈r, v 〉 where r is a round number and v a proposed value. Third, a process is directed to skip rounds according to its view of the current global state (thereby saving useless computation rounds). Finally, the algorithm benefits from the adaptive wait-free implementations that have been proposed for store-collect objects, namely, the number of shared memory accesses involved in a collect operation is O(k) where k is the number of processes that have invoked the store operation. This makes the proposed algorithm particularly efficient and interesting for multiprocess programs made up of asynchronous crash-prone processes that run on top of multicore architectures.