We give an optimal, wait-free implementation of an increment register. An increment register is a concurrent object consisting of an integer-valued register with an increment operation that atomically increments the register and returns the previous value. We implement this register in a synchronous, message-passing model with crash failures. In our implementation, an increment operation halts in O(logc) rounds of communication, where c is the number of concurrently executing increment operations. This is the rst wait-free implementation of any object that matches the (logc) lower bound by Herlihy and Tuttle for wait-free implementations, and it proves that their lower bound is tight. The signi cance of our result is not so much the implementation itself, but what it says about lower bounds. Our result says that (logc) is the best possible lower bound that applies to so many objects in so many models. The algorithm itself is interesting, however, because it is based on an optimal solu...
Soma Chaudhuri, Mark R. Tuttle