Thread Coordination via Segmented Synchronization Primitives

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing synchronization primitives in computer systems are inefficient, causing excessive waiting among threads when one thread takes a long time to complete, leading to delayed execution of other threads.

Innovation Solution

Employing a coordination mechanism that uses two high-level primitives, the Mark primitive and the AfterAll primitive, allowing additional task sections to execute between marked points and coordination points, thereby improving efficiency by enabling partial thread processing while waiting for completion of initial task sections.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a single synchronization primitive is used to coordinate tasks among threads, then thread coordination is achieved, but execution efficiency deteriorates due to excessive waiting

Engineering Contradiction:
Improvethread coordinationVSAvoidexecution efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent divides the single synchronization primitive into two separate primitives: a first synchronization primitive that allows threads to proceed independently after completing their first task section, and a second synchronization primitive that coordinates the second task sections. This segmentation eliminates the bottleneck where all threads must wait for the slowest thread, thereby improving execution efficiency while maintaining coordination reliability.

Inventive Principle:
Principle #1Segmentation

2Reliability

If threads wait for the slowest thread to complete before proceeding, then synchronization is maintained, but waiting time increases excessively

Engineering Contradiction:
ImprovesynchronizationVSAvoidwaiting time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the synchronized execution into two independent phases using two different synchronization primitives. Threads execute their first task sections and call the first synchronization primitive independently without blocking each other. Only when threads need to execute their second task sections do they coordinate through the second synchronization primitive. This reduces waiting time by allowing independent progression in the first phase while maintaining synchronization in the second phase.

Inventive Principle:
Principle #1Segmentation

3Reliability

If all threads must complete their first task section before any thread can execute its second task section, then task coordination is ensured, but overall processing speed decreases

Engineering Contradiction:
Improvetask coordinationVSAvoidprocessing speed
Core Design Contradiction:
ReliabilityVSSpeed

Solution Approach 1:

The patent divides task execution into two distinct segments coordinated by different synchronization primitives. The first segment allows threads to complete their first task sections and invoke the first synchronization primitive independently. The second segment coordinates the execution of second task sections through the second synchronization primitive. This segmentation enables parallel processing in the first segment while maintaining coordinated execution in the second segment, thereby improving overall processing speed without sacrificing task coordination reliability.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS8904406B2Coordination of tasks executed by a plurality of threads using two synchronization primitive calls
Publication Date: 2014.12.02 HEWLETT PACKARD ENTERPRISE DEV LP
  • US8904406B2 patent drawing
  • US8904406B2 patent drawing
  • US8904406B2 patent drawing

AI summary

To coordinate tasks executed by a plurality of threads that each includes plural task sections, a call of a mark primitive to mark a first point after a first of the plural task sections is provided. Also, a call of a second primitive is provided to indicate that a second of the plural task sections is not allowed to begin until after the plurality of threads have each reached the first point.