  The concurrency literature presents a number of approaches for building
non-blocking, FIFO, multiple-producer and multiple-consumer (MPMC) queues.
However, only a fraction of them have high performance. In addition, many queue
designs, such as LCRQ, trade memory usage for better performance. The recently
proposed SCQ design achieves both memory efficiency as well as excellent
performance. Unfortunately, both LCRQ and SCQ are only lock-free. On the other
hand, existing wait-free queues are either not very performant or suffer from
potentially unbounded memory usage. Strictly described, the latter queues, such
as Yang & Mellor-Crummey's (YMC) queue, forfeit wait-freedom as they are
blocking when memory is exhausted.
  We present a wait-free queue, called wCQ. wCQ is based on SCQ and uses its
own variation of fast-path-slow-path methodology to attain wait-freedom and
bound memory usage. Our experimental studies on x86 and PowerPC architectures
validate wCQ's great performance and memory efficiency. They also show that
wCQ's performance is often on par with the best known concurrent queue designs.
