Concurrent Reference Counting and Resource Management in Wait-free Constant Time

02/17/2020
by   Guy E. Blelloch, et al.
0

A common problem when implementing concurrent programs is efficiently protecting against unsafe races between processes reading and then using a resource (e.g., memory blocks, file descriptors, or network connections) and other processes that are concurrently overwriting and then destructing the same resource. Such read-destruct races can be protected with locks, or with lock-free solutions such as hazard-pointers or read-copy-update (RCU). In this paper we describe a method for protecting read-destruct races with expected constant time overhead, O(P^2) space and O(P^2) delayed destructs, and with just single word atomic memory operations (reads, writes, and CAS). It is based on an interface with four primitives, an acquire-release pair to protect accesses, and a retire-eject pair to delay the destruct until it is safe. We refer to this as the acquire-retire interface. Using the acquire-retire interface, we develop simple implementations for three common use cases: (1) memory reclamation with applications to stacks and queues, (2) reference counted objects, and (3) objects manage by ownership with moves, copies, and destructs. The first two results significantly improve on previous results, and the third application is original. Importantly, all operations have expected constant time overhead.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
08/10/2020

Concurrent Fixed-Size Allocation and Free in Constant Time

Our goal is to efficiently solve the dynamic memory allocation problem i...
research
11/21/2019

LL/SC and Atomic Copy: Constant Time, Space Efficient Implementations using only pointer-width CAS

The Load-Link/Store-Conditional (LL/SC) primitive is considered the most...
research
11/28/2018

Safe Deferred Memory Reclamation with Types

Memory management in lock-free data structures remains a major challenge...
research
08/31/2023

The Synchronization Power of Auditable Registers

Auditability allows to track all the read operations performed on a regi...
research
04/10/2018

A Non-blocking Buddy System for Scalable Memory Allocation on Multi-core Machines

Common implementations of core memory allocation components, like the Li...
research
01/09/2014

Performance Impact of Lock-Free Algorithms on Multicore Communication APIs

Data race conditions in multi-tasking software applications are prevente...
research
10/31/2022

Low-Latency, High-Throughput Garbage Collection (Extended Version)

Production garbage collectors make substantial compromises in pursuit of...

Please sign up or login with your details

Forgot password? Click here to reset