Striped Locking for Concurrent Linked List Thread Safety

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Concurrent linked lists are challenging to make thread-safe due to unrestricted arbitrary access, leading to difficulties in implementing scalable and efficient synchronization models, with existing solutions either using coarse-grained locking that degrades performance or lock-free implementations that impose restrictive assumptions on data structure usage.

Innovation Solution

The implementation of a striped-locking algorithm for concurrent linked lists, where each striped lock object locks multiple nodes based on computed indices from node values, providing fine-grained locking while preserving usability and supporting bi-directional traversal without sorting or restricting node access.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If coarse-grained locking is used to synchronize access to nodes in a concurrent linked list, then thread safety is achieved, but performance degrades due to locking the whole list

Engineering Contradiction:
Improvethread safetyVSAvoidperformance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent divides the linked list into multiple segments, each protected by a separate lock object. Instead of using a single coarse-grained lock for the entire list, the implementation creates multiple fine-grained locks that can be acquired independently. This segmentation allows concurrent access to different portions of the list, improving performance while maintaining thread safety through proper synchronization of individual segments.

Inventive Principle:
Principle #1Segmentation

2Productivity

If lock-free implementations are used to avoid locking overhead, then performance improves, but restrictive assumptions are imposed on data structure usage

Engineering Contradiction:
ImproveperformanceVSAvoidusability
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent changes the synchronization model from lock-free atomic operations to lock-based synchronization with multiple fine-grained locks. This parameter change in the synchronization approach allows the data structure to maintain full usability and adaptability while achieving good performance through selective locking. The implementation allows arbitrary access patterns and modifications without imposing restrictive assumptions on how the data structure must be used.

Inventive Principle:
Principle #35Parameter changes

3Productivity

If fine-grained locking is used to improve performance over coarse-grained locking, then productivity increases, but the synchronization model becomes more complex and restrictive

Engineering Contradiction:
ImproveperformanceVSAvoidsynchronization model complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the linked list into multiple lockable regions, with each segment having its own lock object. This segmentation strategy provides fine-grained control over synchronization, allowing performance optimization by locking only the necessary portions of the list. The complexity is managed through a systematic approach where lock objects are associated with specific list segments, making the synchronization model more manageable compared to fully lock-free approaches.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent creates a universal locking mechanism that can be applied to any segment of the linked list through a common interface. The lock objects serve multiple purposes: they provide mutual exclusion, enable fine-grained concurrency control, and maintain the structural integrity of the list. This multi-functional approach simplifies the overall synchronization model while achieving fine-grained performance benefits.

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

Data Source

PatentUS8224799B2Providing lock-based access to nodes in a concurrent linked list
Publication Date: 2012.07.17 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8224799B2 patent drawing
  • US8224799B2 patent drawing
  • US8224799B2 patent drawing

AI summary

A method of providing lock-based access to nodes in a concurrent linked list includes providing a plurality of striped lock objects. Each striped lock object is configured to lock at least one of the nodes in the concurrent linked list. An index is computed based on a value stored in a first node to be accessed in the concurrent linked list. A first one of the striped lock objects is identified based on the computed index. The first striped lock object is acquired, thereby locking and providing protected access to the first node.