Lock-Free Ring Buffer Using Atomic State Reservation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing ring buffers face issues with blocking when consumers encounter an empty queue or producers encounter a full queue, and existing lock-based solutions require knowledge of producer and consumer numbers, which can change dynamically, leading to inefficiencies and potential race conditions.

Innovation Solution

A lock-free ring buffer implementation using single-variable atomic operations, such as atomic-load, atomic-store, and atomic-compare-and-swap, that does not require dynamic storage management or knowledge of producer/consumer numbers, ensuring thread-safe data writing and reading without locks.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If locks are used for thread synchronization in ring buffer, then thread safety is ensured, but performance deteriorates due to contention and potential deadlocks

Engineering Contradiction:
Improvethread safetyVSAvoidperformance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent extracts the locking mechanism entirely from the ring buffer implementation, replacing it with lock-free atomic operations. This removes the source of contention and deadlocks while maintaining thread safety through atomic compare-and-swap operations on the head and tail pointers, as well as on element state flags.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent replaces the mechanical locking system with atomic operations at the hardware level. Instead of using mutexes or semaphores that require system calls and context switches, the implementation uses CPU-level atomic instructions (compare-and-swap) that operate directly on memory, eliminating the overhead and contention associated with traditional locking mechanisms.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Adaptability or versatility

If dynamic storage management is implemented in ring buffer, then flexibility is improved, but complexity increases

Engineering Contradiction:
ImproveflexibilityVSAvoidcomplexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent segments the ring buffer into fixed-size elements arranged in a circular array, where each element has a predetermined position. This segmentation allows the buffer to handle dynamic data flows without requiring dynamic memory allocation, as the fixed structure can accommodate any sequence of insertions and deletions through pointer arithmetic alone.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a state flag system that dynamically tracks whether each element is available for writing or being read. This dynamic state management, combined with atomic operations on the head and tail pointers, enables the fixed-structure buffer to adapt to varying production and consumption rates without requiring actual dynamic memory management.

Inventive Principle:
Principle #15Dynamics

3Adaptability or versatility

If traditional ring buffer is used for inter-device memory transactions, then compatibility is maintained, but efficiency deteriorates due to memory transaction overhead

Engineering Contradiction:
ImprovecompatibilityVSAvoidmemory transfer efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent prepares the ring buffer structure in advance with pre-allocated fixed-size elements and initializes the head and tail pointers to known states. This preliminary setup eliminates the need for runtime memory allocation and deallocation operations during actual data transfers between CPU and GPU, reducing memory transaction overhead while maintaining compatibility with standard memory interfaces.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentEP4068094B1Lock-free ring buffer
Publication Date: 2026.05.06 DREAMWORKS ANIMATION LLC
  • EP4068094B1 patent drawingFigure 1A~1B
  • EP4068094B1 patent drawingFigure 1C~1D
  • EP4068094B1 patent drawingFigure 2A~2B

AI summary

There is described a method (800) for writing, by a computing thread, data to a ring buffer is disclosed. The method (800) includes determining (802) whether the ring buffer is full. If the ring buffer is not full, the method further includes: reserving (804) an element of the ring buffer for writing the data, wherein reserving the element includes incrementing a size variable corresponding to a number of stored elements in the ring buffer; reserving (806) a portion of the ring buffer at which the data is to be written; and determining (808) whether a state of the portion of the ring buffer is in change by at least one other computing thread. If the state is not in change, the method (800) further includes: marking (810) the state of the portion of the ring buffer as being in change by the computing thread; and writing (812) the data to the portion of the ring buffer. A similar method of reading, by a computing thread, data from a ring buffer is disclosed.