Techniques for Building Highly Concurrent Data Structures
Ori Shalev · 2007
In this dissertation, we present several novel techniques for concurrently accessing shared data structures in shared memory multi-processor/multicore machines. These techniques improve parallelism and thus system throughput by avoiding the use of coarse-grained locking. We begin by presenting a new design for a concurrent hash table based on the novel concept of a split-ordered list. The hash table algorithm is the first non-blocking algorithm efficiently supporting growing data sets. We then proceed to introduce three paradigms for general implementation of concurrent data structures. The first two general synchronization schemes share a principle we call logsynchronization. These schemes aim to improve throughput by enabling readonly operations to be executed concurrently with modifying operations. A low-overhead execution of the common type of operations is possible due to duplication of shared data into active and shadow copies. Finally, we introduce Transactional Locking (TL), a practical design approach for software transactional memory (STM) systems. We introduce the TL2 finegrained locking scheme based on a global clock, a scheme that deals with many important practical aspects of STM implementation: low overhead, involunerability to inconsistent states, and compatibility with non-custommemorymanagement. A common feature of all the proposed designs is the emphasis on making them practical. All algorithms were evaluated empirically and shown to provide high throughput in a significant set of benchmarks.