Interlocked Object Transfer Data Structure for Multi-Threaded Updates

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multi-threaded computing environments, existing methods for updating shared data structures either rely on memory allocations, which are slow and prone to failure, or blocking lock acquisitions, which limit scalability and performance by serializing thread access.

Innovation Solution

An interlocked object transfer data structure is used, where update threads set flags to request updates without allocating memory or using blocking locks, allowing a processing thread to execute these requests efficiently.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If memory allocation is used for each update request, then update requests can be processed, but the system becomes slow and prone to failure in low-resource scenarios

Engineering Contradiction:
Improveupdate request processing reliabilityVSAvoidupdate request processing speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system pre-allocates a fixed-size object pool at initialization time. These objects are ready for immediate use without requiring memory allocation during update requests. The pool is created beforehand using a single memory allocation, avoiding repeated allocations during runtime.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Instead of allocating new memory for each update request, the system reuses existing objects from the pre-allocated pool. Objects are copied or transferred between threads and update structures, eliminating the need for frequent memory allocations and deallocations.

Inventive Principle:
Principle #26Copying

2Reliability

If blocking lock acquisition is used to synchronize access to the data structure, then thread safety is achieved, but scalability and performance are limited due to serialized access

Engineering Contradiction:
Improvethread safetyVSAvoidsystem scalability and performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system divides the update mechanism into separate components: a lock-free object pool, interlocked operation structures, and update request queues. This segmentation allows multiple threads to operate on different parts of the system concurrently without blocking each other, while still maintaining data integrity through structured access patterns.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system replaces the mechanical blocking lock mechanism with interlocked operations (atomic read-modify-write operations). These operations provide the necessary synchronization and thread safety without causing threads to block and wait, thereby eliminating the serialization bottleneck while maintaining reliability.

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

3Ease of manufacture

If a lock is required to allocate memory for update requests, then memory allocation can be performed, but the overall update process becomes slower

Engineering Contradiction:
Improvememory allocation capabilityVSAvoidupdate processing speed
Core Design Contradiction:
Ease of manufactureVSProductivity

Solution Approach 1:

Memory is allocated in advance during system initialization to create a fixed-size object pool. This preliminary allocation eliminates the need for lock-protected memory allocation operations during runtime update requests, as objects are simply retrieved and reused from the pre-allocated pool.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS7577657B2System and method for updating objects in a multi-threaded computing environment
Publication Date: 2009.08.18 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7577657B2 patent drawing
  • US7577657B2 patent drawing
  • US7577657B2 patent drawing

AI summary

An interlocked object transfer data structure is provided for enabling requests made by multiple threads to update objects in a multi-threaded computing environment to be executed by a single processing thread. An object in the interlocked object transfer data structure contains a pair of flags, which the processing thread manipulates via interlocked operations to manage updates for the object that are requested by multiple threads.