Reusable Concurrent Data Types
read more
Citations
A Lazy Snapshot Algorithm with Eager Validation
More than you ever wanted to know about synchronization: synchrobench, measuring the impact of the synchronization on concurrent algorithms
Elastic transactions
More than you ever wanted to know about synchronization: synchrobench, measuring the impact of the synchronization on concurrent algorithms
Composing concurrency control
References
Concurrency Control and Recovery in Database Systems
Linearizability: a correctness condition for concurrent objects
Transactional memory: architectural support for lock-free data structures
Software transactional memory
The Art of Multiprocessor Programming
Related Papers (5)
Frequently Asked Questions (15)
Q2. What are the future works mentioned in the paper "Reusable concurrent data types" ?
Future work includes ( a ) formalizing a framework to derive incompatibilities of synchronization semantics and ( b ) optimizing their current implementation through concurrent irrevocable transactions [ 56 ] or transactional instruction extensions with Java opcodes to reduce overhead.
Q3. How many threads are more efficient than monomorphic STMs?
Although monomorphic STMs stop scaling at 32 threads, they are more efficient than PSTM at lower levels of parallelism confirming their observations on micro-benchmarks.
Q4. How can a PT be enforced in Java?
Note that requiring CDTs to be accessed transactionally can be enforced in Java through the use of pre-existing setters and getters as, for example, when accessing ThreadLocal variables.
Q5. What is the meaning of a composite annotated method?
Composability is guaranteed by the fact that whatever forms protect original methods, the programmer always has the possibility to derive a composite annotated method that will execute atomically.
Q6. What is the main novelty of the PT methodology?
The PT methodology achieves better scalability than classic TM systems because it ensures the atomicity of the CDT operations but not of their read/write sequences.
Q7. What is the semantics of a composite method annotated as opaque?
In particular, while two traversals may be originally annotated as hand-over-hand ignoring some conflicts for the sake of concurrency, a new composite method annotated as opaque that reuses them switches their semantics to opaque.
Q8. What is the main novelty of the Polymorphic Transaction (PT) methodology?
Its main novelty is not in providing a novel transaction semantics but in combining multiple of them toscale to high levels of parallelism as they let advanced programmers exploit the application semantics.
Q9. Why does the Java garbage collector cause overhead?
The authors see two reasons: (a) some overhead is induced by the extra bookkeeping of their synchronizations that triggers the Java garbage collector more often, (b) the atomicity of the reusable size and updates precludes a lot of non-atomic executions allowed by the non-reusable skip list.
Q10. What is the drawback of the proposed UP MV STM?
Maintaining the minimum of versions per object that maximizes the variety of output histories comes at a cost [33]: the proposed useless-prefix multi-version (UP MV) STM guarantees this property but, as a drawback, does not support invisible reads.
Q11. How can one deduce a linearization point for each operation of a transaction form?
One can easily deduce a linearization point for each operation of a transaction form, at which the transaction of the corresponding form appears to execute instantaneously.
Q12. What is the risk of a non-transactional access?
A potential risk is that non-transactional accesses would typically observe transient states if they could access transactional CDTs as the authors do not provide strong atomicity [38].
Q13. Why is the resulting CDT not reusable?
Precisely because predicting the outcomes of this size requires to understand the implementation internals, the resulting CDT is not reusable.
Q14. What is the advantage of the transaction annotations?
An advantage of their transaction annotations is that each method, be it private (e.g., ensureCapacityHelper) or public (e.g., ensureCapacity) can be annotated as a transaction.
Q15. How does the PT methodology help achieve this goal?
The PT methodology helps reaching this goal by allowing collaborative development of scalable libraries any programmer can compose and extend, hence confirming their recent observation [11].