Practical, Fast and Simple Concurrent FIFO Queues Using Single Word Synchronization Primitives

  • Authors:
  • Claude Evéquoz

  • Affiliations:
  • University of Applied Sciences Western Switzerland, Yverdon-les-Bains, Switzerland CH-1400

  • Venue:
  • Ada-Europe '08 Proceedings of the 13th Ada-Europe international conference on Reliable Software Technologies
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

We present an efficient and practical non-blocking implementation of a concurrent array-based FIFO queue that is suitable for preemptive multi threaded systems. It is well known that concurrent FIFO queues relying on mutual exclusion cause blocking, which have several drawbacks and degrade overall system performance. Link-based non-blocking queue algorithms have a memory management problem whereby a removed node from the queue can neither be freed nor reused because other threads may still be accessing the node. Existing solutions to this problem introduce a fair amount of overhead and are shown to be less efficient compared to array-based algorithms, which inherently do not suffer from this problem. In addition to being independent in advance knowledge of the number of threads that can access the queue, our new algorithm improves on previously proposed algorithms in that it does not re quire any special instruction other than a load-linked/store-conditional atomic instruction operating on pointer-wide number of bits.