Implementation of the algorithm described in this paper.
Check the project wiki for the details.
Summary
The algorithm is a transformation mechanism which is able to execute a given lock-free algorithm as if it was wait-free, based on a few properties of the lock-free algorithm implementation. The most important of them is to split the stages involved in executing a complete operation of the data structure in such a way that the majority of the operation can be parallelized.
Problems
Currently the implementation is making the assumption that uint_least_64
is large enough in order to prevent ABA.
Other than that, it also does not take into account that the memory allocater is not wait-free.