  Concurrency has been a subject of study for more than 50 years. Still, many
developers struggle to adapt their sequential code to be accessed concurrently.
This need has pushed for generic solutions and specific concurrent data
structures.
  Wait-free universal constructs are attractive as they can turn a sequential
implementation of any object into an equivalent, yet concurrent and wait-free,
implementation. While highly relevant from a research perspective, these
techniques are of limited practical use when the underlying object or data
structure is sizable. The copy operation can consume much of the CPU's
resources and significantly degrade performance.
  To overcome this limitation, we have designed CX, a multi-instance-based
wait-free universal construct that substantially reduces the amount of copy
operations. The construct maintains a bounded number of instances of the object
that can potentially be brought up to date. We applied CX to several sequential
implementations of data structures, including STL implementations, and compared
them with existing wait-free constructs. Our evaluation shows that CX performs
significantly better in most experiments, and can even rival with hand-written
lock-free and wait-free data structures, simultaneously providing wait-free
progress, safe memory reclamation and high reader scalability.
