Non-blocking Patricia Tries with Replace Operations

This paper presents a non-blocking Patricia trie implementation for an asynchronous shared-memory system using Compare&Swap. The trie implements a linearizable set and supports three update operations: insert adds an element, delete removes an element and replace replaces one element by another. The replace operation is interesting because it changes two different locations of trie atomically. If all update operations modify different parts of the trie, they run completely concurrently. The implementation also supports a wait-free find operation, which only reads shared memory and never changes the data structure. Empirically, we compare our algorithms to some existing set implementations.

[1]  James R. Larus,et al.  Transactional Memory, 2nd edition , 2010, Transactional Memory.

[2]  Trevor Brown,et al.  Non-blocking k-ary Search Trees , 2011, OPODIS.

[3]  Timothy L. Harris,et al.  A Pragmatic Implementation of Non-blocking Linked-Lists , 2001, DISC.

[4]  James R. Larus,et al.  Transactional memory , 2008, CACM.

[5]  Erez Petrank,et al.  A lock-free B+tree , 2012, SPAA '12.

[6]  Philippas Tsigas,et al.  Supporting lock-free composition of concurrent data objects , 2010, CF '10.

[7]  Martin Odersky,et al.  Concurrent tries with efficient non-blocking snapshots , 2012, PPoPP '12.

[8]  Håkan Grahn,et al.  ParMiBench - An Open-Source Benchmark for Embedded Multiprocessor Systems , 2010, IEEE Computer Architecture Letters.

[9]  Eric Ruppert,et al.  Lock-free linked lists and skip lists , 2004, PODC '04.

[10]  Michael F. Goodchild,et al.  Geographic information systems , 1988, Encyclopedia of Theoretical Ecology.

[11]  John Riedl,et al.  Generalized suffix trees for biological sequence data: applications and implementation , 1994, 1994 Proceedings of the Twenty-Seventh Hawaii International Conference on System Sciences.

[12]  Shane V. Howley,et al.  A non-blocking internal binary search tree , 2012, SPAA '12.

[13]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[14]  Michael F. Goodchild,et al.  Geographic information systems and science: today and tomorrow , 2009, Ann. GIS.

[16]  Greg Barnes,et al.  A method for implementing lock-free shared-data structures , 1993, SPAA '93.

[17]  Andrea Pietracaprina,et al.  Mining Frequent Itemsets using Patricia Tries , 2003, FIMI.

[18]  Keir Fraser,et al.  Practical lock-freedom , 2003 .

[19]  Kunle Olukotun,et al.  A practical concurrent binary search tree , 2010, PPoPP '10.

[20]  Jyh-Jong Tsay,et al.  Lock-free concurrent tree structures for multiprocessor systems , 1994, Proceedings of 1994 International Conference on Parallel and Distributed Systems.

[21]  Faith Ellen,et al.  A general technique for non-blocking trees , 2014, PPoPP '14.

[22]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[23]  Min Gan,et al.  Extended Negative Association Rules and the Corresponding Mining Algorithm , 2005, ICMLC.

[24]  Walid G. Aref,et al.  SP-GiST: An Extensible Database Index for Supporting Space Partitioning Trees , 2001, Journal of Intelligent Information Systems.

[25]  Philippas Tsigas,et al.  Scalable and lock-free concurrent dictionaries , 2004, SAC '04.

[26]  Faith Ellen,et al.  Non-blocking binary search trees , 2010, PODC.

[27]  Trevor Mudge,et al.  MiBench: A free, commercially representative embedded benchmark suite , 2001 .

[28]  Håkan Grahn,et al.  Transactional memory , 2010, J. Parallel Distributed Comput..

[29]  Faith Ellen,et al.  Universal constructions that ensure disjoint-access parallelism and wait-freedom , 2015, Distributed Computing.

[30]  Haim Kaplan,et al.  CBTree: A Practical Concurrent Self-Adjusting Search Tree , 2012, DISC.

[31]  Donald R. Morrison,et al.  PATRICIA—Practical Algorithm To Retrieve Information Coded in Alphanumeric , 1968, J. ACM.