  Multi-Version Concurrency Control (MVCC) is a common mechanism for achieving
linearizable range queries in database systems and concurrent data-structures.
The core idea is to keep previous versions of nodes to serve range queries,
while still providing atomic reads and updates. Existing concurrent
data-structure implementations, that support linearizable range queries, are
either slow, use locks, or rely on blocking reclamation schemes. We present
EEMARQ, the first scheme that uses MVCC with lock-free memory reclamation to
obtain a fully lock-free data-structure supporting linearizable inserts,
deletes, contains, and range queries. Evaluation shows that EEMARQ outperforms
existing solutions across most workloads, with lower space overhead and while
providing full lock freedom.
