Bounds on shared memory for mutual exclusion
Information and Computation
Wait-free Test-and-Set (Extended Abstract)
WDAG '92 Proceedings of the 6th International Workshop on Distributed Algorithms
Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects
IEEE Transactions on Parallel and Distributed Systems
Myths and realities: the performance impact of garbage collection
Proceedings of the joint international conference on Measurement and modeling of computer systems
Lock-free parallel and concurrent garbage collection by mark&sweep
Science of Computer Programming
Fast randomized test-and-set and renaming
DISC'10 Proceedings of the 24th international conference on Distributed computing
Sub-logarithmic test-and-set against aweak adversary
DISC'11 Proceedings of the 25th international conference on Distributed computing
On the time and space complexity of randomized test-and-set
PODC '12 Proceedings of the 2012 ACM symposium on Principles of distributed computing
Pragmatic primitives for non-blocking data structures
Proceedings of the 2013 ACM symposium on Principles of distributed computing
Pragmatic primitives for non-blocking data structures
Proceedings of the 2013 ACM symposium on Principles of distributed computing
A general technique for non-blocking trees
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Hi-index | 0.00 |
We present a new technique for reclaiming memory in concurrent shared memory algorithms with n asynchronous processes. Our methodology can be applied in the same settings as hazard pointers [10], but provides better worst-case guarantees: For the same tasks for which hazard pointers have expected constant amortized complexity, our technique guarantees constant time in the worst-case. We use our technique to implement efficient randomized long-lived test-and-set (TAS) objects from registers, based on known constructions of randomized one-time TAS objects [2, 9]. One of our constructions uses O(n) space (which is optimal), and the reset() and Test&Set() operations have expected step complexity O(log log n) against the oblivious adversary. We also present a general method of augmenting shared objects with a reset() operation which can be used to reset the object into its initial state at any time. In many cases the transformation is optimal with respect to the time complexity of the resulting object. E.g., an object implemented from m registers can be augmented with a reset() operation which has O(1) time complexity and without affecting the asymptotic time complexity of other operations; the resulting object uses O(n2 ⋅ m) unbounded registers.