Enhancing Concurrent Data Structures with Concurrent Iteration Operations
Paper in proceedings, 2014
Concurrent data structures provide the means to multi-threaded applications to share data.
Data structures come with a set of predefined operations, specified by the semantics of the data structure.
In the literature and in several contemporary commonly used programming environments,
the notion of iteration has been introduced for collection data structures,
as a bulk operation enhancing the native set of operations.
Iterations in several of these contexts have been treated as sequential in nature and
may provide weak consistency guarantees when running concurrently with the native operations of the data structures.
In this work we study iterations in concurrent data structures in the context of concurrency with the native operations and the guarantees that they provide.
Besides linearizability, we propose a set of consistency specifications for such bulk operations, including also concurrency-aware properties by building on Lamport's systematic definitions for registers.
Furthermore, by using queues and composite registers as case-studies of underlying objects, we provide a set of constructions of iteration operations, satisfying the properties and showing containment relations.
Besides the trade-off between consistency and throughput, we demonstrate the trade-off between the overhead of the bulk operation and possible support (helping) by the native operations of the data structure.
We describe a set of algorithms that demonstrate these and study the implications on the efficiency of the implementations.
concurrent data structures