Efficient fetch-and-increment

  • Authors:
  • Faith Ellen;Vijaya Ramachandran;Philipp Woelfel

  • Affiliations:
  • University of Toronto, Canada;University of Texas at Austin;University of Calgary, Canada

  • Venue:
  • DISC'12 Proceedings of the 26th international conference on Distributed Computing
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

A Fetch&Inc object stores a non-negative integer and supports a single operation, fi, that returns the value of the object and increments it. Such objects are used in many asynchronous shared memory algorithms, such as renaming, mutual exclusion, and barrier synchronization. We present an efficient implementation of a wait-free Fetch&Inc object from registers and load-linked/store-conditional (ll/sc) objects. In a system with p processes, every fi operation finishes in O(log2p) steps, and only a polynomial number of registers and O(logp)-bit ll/sc objects are needed. The maximum number of fi operations that can be supported is limited only by the maximum integer that can be stored in a shared register. This is the first wait-free implementation of a Fetch&Inc object that achieves both poly-logarithmic step complexity and polynomial space complexity, but does not require unrealistically large ll/sc objects or registers.