Lock-Free Concurrent Collection Using Local Lists

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing concurrent collection technologies in multi-processor systems face scalability issues due to shared resources and lock contention, limiting performance and reliability in parallel execution environments.

Innovation Solution

The implementation of local lists, either processor or thread local, to create a scalable, lock-free concurrent collection system that reduces contention by allowing each processor or thread to manage its own local list, using an interface for adding and removing elements while ensuring lock freedom and efficient data management.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If shared resources and locks are used in concurrent collections, then thread safety is ensured, but scalability and performance deteriorate due to lock contention

Engineering Contradiction:
Improvethread safetyVSAvoidscalability
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The concurrent collection is segmented into multiple local lists, each associated with a different processor or thread. This segmentation eliminates lock contention by allowing each processor to independently access and modify its own local list without acquiring locks, thereby maintaining thread safety while improving scalability and performance in multi-processor systems.

Inventive Principle:
Principle #1Segmentation

2Stability of the object's composition

If locks are used to ensure thread safety, then data consistency is maintained, but performance and reliability worsen due to blocking and context switches

Engineering Contradiction:
Improvedata consistencyVSAvoidperformance
Core Design Contradiction:
Stability of the object's compositionVSProductivity

Solution Approach 1:

By dividing the collection into multiple local lists and allowing each processor to work on its own list without locks, the system maintains data consistency within each local list while eliminating the blocking and context switches associated with lock-based synchronization, thereby improving overall performance.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary mechanism where processors can steal elements from other processors' local lists when their own list is empty. This work-stealing approach maintains data consistency while avoiding locks, reducing blocking and context switches, and improving performance.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Device complexity

If a single shared collection is used, then simplicity is maintained, but scalability deteriorates due to contention between processors

Engineering Contradiction:
Improvecollection structureVSAvoidscalability
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The collection is divided into multiple local lists that can be independently accessed by different processors. This segmentation improves scalability by reducing contention, and the interface layer maintains simplicity by providing unified add and remove operations that automatically route to appropriate local lists.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The collection interface provides universal add and remove operations that work across all local lists, maintaining simplicity for users while enabling scalable performance through the underlying segmented structure. The interface abstracts the complexity of multiple local lists while providing consistent functionality.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS8607237B2Collection with local lists for a multi-processor system
Publication Date: 2013.12.10 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8607237B2 patent drawing
  • US8607237B2 patent drawing
  • US8607237B2 patent drawing

AI summary

A method includes providing a collection that includes a plurality of local lists. Each local list is associated with a different processor or thread in a multi-processor system. An interface to the collection is provided for adding elements to and removing elements from the collection. An add operation is performed with a first processor in the multi-processor system using the interface to add a first element to the collection. The interface is configured to cause the first element to be added to the local list associated with the first processor.