ICCSA'11 Proceedings of the 2011 international conference on Computational science and Its applications - Volume Part V
Beyond expert-only parallel programming?
Proceedings of the 2012 ACM workshop on Relaxing synchronization for multicore and manycore scalability
A case for relativistic programming
Proceedings of the 2012 ACM workshop on Relaxing synchronization for multicore and manycore scalability
Lockless multi-core high-throughput buffering scheme for kernel tracing
ACM SIGOPS Operating Systems Review
Pessimistic software lock-elision
DISC'12 Proceedings of the 26th international conference on Distributed Computing
A Read-Copy Update based parallel server for distributed crowd simulations
The Journal of Supercomputing
Nonblocking algorithms and scalable multicore programming
Communications of the ACM
Structured deferral: synchronization via procrastination
Communications of the ACM
Proving the correctness of nonblocking data structures
Communications of the ACM
Structured Deferral: Synchronization via Procrastination
Queue - Concurrency
Proving the Correctness of Nonblocking Data Structures
Queue - Concurrency
Nonblocking Algorithms and Scalable Multicore Programming
Queue - Concurrency
Multi-core systems modeling for formal verification of parallel algorithms
ACM SIGOPS Operating Systems Review
Shrinking the hypervisor one subsystem at a time: a userspace packet switch for virtual machines
Proceedings of the 10th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Hi-index | 0.05 |
Read-copy update (RCU) is a synchronization technique that often replaces reader-writer locking because RCU's read-side primitives are both wait-free and an order of magnitude faster than uncontended locking. Although RCU updates are relatively heavy weight, the importance of read-side performance is increasing as computing systems become more responsive to changes in their environments. RCU is heavily used in several kernel-level environments. Unfortunately, kernel-level implementations use facilities that are often unavailable to user applications. The few prior user-level RCU implementations either provided inefficient read-side primitives or restricted the application architecture. This paper fills this gap by describing efficient and flexible RCU implementations based on primitives commonly available to user-level applications. Finally, this paper compares these RCU implementations with each other and with standard locking, which enables choosing the best mechanism for a given workload. This work opens the door to widespread user-application use of RCU.