A methodology for implementing highly concurrent data objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
Lock-free linked lists using compare-and-swap
Proceedings of the fourteenth annual ACM symposium on Principles of distributed computing
Simple, fast, and practical non-blocking and blocking concurrent queue algorithms
PODC '96 Proceedings of the fifteenth annual ACM symposium on Principles of distributed computing
Proceedings of the thirteenth annual ACM symposium on Parallel algorithms and architectures
Evaluating the performance of non-blocking synchronization on shared-memory multiprocessors
Proceedings of the 2001 ACM SIGMETRICS international conference on Measurement and modeling of computer systems
WOSP '02 Proceedings of the 3rd international workshop on Software and performance
A Pragmatic Implementation of Non-blocking Linked-Lists
DISC '01 Proceedings of the 15th International Conference on Distributed Computing
Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects
IEEE Transactions on Parallel and Distributed Systems
Scalable lock-free dynamic memory allocation
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Fast and lock-free concurrent priority queues for multi-thread systems
Journal of Parallel and Distributed Computing
Concurrent programming without locks
ACM Transactions on Computer Systems (TOCS)
Progress guarantee for parallel programs via bounded lock-freedom
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
The Art of Multiprocessor Programming
The Art of Multiprocessor Programming
Supporting lock-free composition of concurrent data objects
Proceedings of the 7th ACM international conference on Computing frontiers
Cache-aware lock-free queues for multiple producers/consumers and weak memory consistency
OPODIS'10 Proceedings of the 14th international conference on Principles of distributed systems
Lock-free and practical doubly linked list-based deques using single-word compare-and-swap
OPODIS'04 Proceedings of the 8th international conference on Principles of Distributed Systems
Non-blocking hashtables with open addressing
DISC'05 Proceedings of the 19th international conference on Distributed Computing
Hi-index | 0.00 |
Highly concurrent and reliable data objects are vital for parallel programming. Lock-free shared data objects are highly concurrent and guarantee that at least one operation, from a set of concurrently executed operations, finishes after a finite number of steps regardless of the state of the other operations. Lock-free data objects provide progress guarantees on the object level. In this paper, we first examine the progress guarantees provided by lock-free shared data objects that have been constructed by composing other lock-free data objects. We observe that although lock-free data objects are composable when it comes to linearizability, when it comes to progress guarantees they are not. More specifically we show that when a lock-free data object is used as a component (is shared) by two or more lock-free data objects concurrently, these objects can no longer guarantee lock-free progress. This makes it impossible for programmers to directly compose lock-free data objects and guarantee lock-freedom. To help programmability in concurrent settings, this paper presents a new synchronization mechanism for composing lock-free data objects. The proposed synchronization mechanism provides an interface to be used when calling a lock-free object from other lock-free objects, and guarantees lock-free progress for every object constructed. An experimental evaluation of the performance cost that the new mechanism introduces, as expected, for providing progress guarantees is also presented.