Persistent Non-Blocking Binary Search Trees Supporting Wait-Free Range Queries.

2019 
This paper presents the first implementation of a search tree data structure in an asynchronous shared-memory system that provides a wait-free algorithm for executing range queries on the tree, in addition to non-blocking algorithms for Insert, Delete and Find, using single-word Compare-and-Swap (CAS). The implementation is linearizable and tolerates any number of crash failures. Insert and Delete operations that operate on different parts of the tree run fully in parallel (without any interference with one another). We employ a lightweight helping mechanism, where each Insert, Delete and Find operation helps only update operations that affect the local neighbourhood of the leaf that the Find arrives at. Similarly, a range query helps only those updates taking place on nodes in the part of the tree it traverses. Our implementation works in a dynamic system where the number of processes may change over time. The implementation builds upon the non-blocking binary search tree of Ellen et al. [PODC 2010] by making the tree persistent. Experimental results show that the persistent tree compares well with other tree data structures that provide range queries. The experimental evaluation also shows that the persistent tree scales well and that the additional cost of persistence is modest, as is the additional cost for achieving wait-free range queries.
    • Correction
    • Source
    • Cite
    • Save
    • Machine Reading By IdeaReader
    50
    References
    12
    Citations
    NaN
    KQI
    []