Making objects writable

We devise a technique for augmenting shared objects in the standard n-process shared memory model with a linearizable Write{} operation, using bounded space and optimal worst-case step complexity. We provide a transformation of any shared object SW supporting only sequential Write{} operations into an object $W$ that supports concurrent Write{} operations. This transformation requires O(n2) SW objects and O(n2) O(log n)-bit registers, and each method (including Write{}) has, up to a constant additive term, the same time complexity as the corresponding method on object $SW$. Our implementation is deterministic, wait-free, and uses only shared registers (supporting atomic read and write operations). To the best of our knowledge, similarly efficient general constructions are not known even if stronger primitives such as CAS or LL/SC are available. Applying our transformation, we obtain an implementation of a k-word register from O(n2⋅ k) single-word registers. As another application we can transform randomized one-time TAS objects (e.g., randomized wait-free implementations that use a bounded number of registers [8,9]), into long-lived ones using also a bounded number of registers. The transformation preserves the time complexity of TaS{} operations and allows resets in constant worst-case time. Our transformation employs a novel memory reclamation technique, which can replace Hazard Pointers [20] and is more efficient.

[1]  Faith Ellen,et al.  An Optimal Implementation of Fetch-and-Increment , 2013, DISC.

[2]  George Giakkoupis,et al.  On the time and space complexity of randomized test-and-set , 2012, PODC '12.

[3]  Maurice Herlihy,et al.  Impossibility and universality results for wait-free synchronization , 1988, PODC '88.

[4]  Mark Moir,et al.  SNZI: scalable NonZero indicators , 2007, PODC '07.

[5]  Wojciech M. Golab,et al.  Constant-RMR implementations of CAS and other synchronization primitives using read and write operations , 2007, PODC '07.

[6]  Håkan Sundell Wait-free reference counting and memory management , 2005, 19th IEEE International Parallel and Distributed Processing Symposium.

[7]  Maurice Herlihy,et al.  The Repeat Offender Problem: A Mechanism for Supporting Dynamic-Sized, Lock-Free Data Structures , 2002, DISC.

[8]  George Giakkoupis,et al.  An O ( √ n ) Space Bound for Obstruction-Free Leader Election , 2013 .

[9]  Marina Papatriantafilou,et al.  Multiword atomic read/write registers on multiprocessor systems , 2009, JEAL.

[10]  Faith Ellen,et al.  A general technique for non-blocking trees , 2014, PPoPP '14.

[11]  Maged M. Michael Hazard pointers: safe memory reclamation for lock-free objects , 2004, IEEE Transactions on Parallel and Distributed Systems.

[12]  Wojciech M. Golab,et al.  RMR-efficient implementations of comparison primitives using read and write operations , 2011, Distributed Computing.

[13]  John D. Valois Lock-free linked lists using compare-and-swap , 1995, PODC '95.

[14]  Mark Moir,et al.  Lock-free reference counting , 2002 .

[15]  Amos Israeli,et al.  Bounded time-stamps , 1987, 28th Annual Symposium on Foundations of Computer Science (sfcs 1987).

[16]  Marina Papatriantafilou,et al.  Efficient and Reliable Lock-Free Memory Reclamation Based on Reference Counting , 2009, IEEE Transactions on Parallel and Distributed Systems.

[17]  Prasad Jayanti A Complete and Constant Time Wait-Free Implementation of CAS from LL/SC and Vice Versa , 1998, DISC.

[18]  Gary L. Peterson,et al.  Concurrent Reading While Writing , 1983, TOPL.

[19]  Yehuda Afek,et al.  Wait-free Test-and-Set (Extended Abstract) , 1992, WDAG.

[20]  Hyonho Lee Fast Local-Spin Abortable Mutual Exclusion with Bounded Space , 2010, OPODIS.

[21]  Dan Alistarh,et al.  Sub-logarithmic Test-and-Set against a Weak Adversary , 2011, DISC.

[22]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[23]  Faith Ellen,et al.  Pragmatic primitives for non-blocking data structures , 2013, PODC '13.