This paper presents an efficient algorithm that builds 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 p i . 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 storecollect-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.
Key-words:asynchronous shared memory system, building block, concurrent object, consensus, distributed algorithm, eventual leader, failure detector, fault-tolerance, modularity, multicore system, process crash, store-collect object Consensus asynchrone efficace à partir des objets distribués Ω et Store-collect Résumé : Cet article présente un algorithme efficace qui implémente un objet consensus sans attente (wait-free). Cet algorithme s'appuie sur un détecteur de fautes Ω pour garantir la vivacité du consensus et sur un objet store-collect qui en assure la sûreté. Cette approche permet de bénéficier des implémentations adaptatives existantes de l'objet store-collect, ce qui fait de l'algorithme proposé une alternative intéressante pour résoudre le problème du consensus dans les systèmes asynchrones sujets aux défaillances construits sur des architectures multiprocesseur.