Delegated Condition Evaluation for Multi-Threaded Synchronization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern computer systems experience performance degradation due to futile wakeups and increased lock contention caused by condition variables notifying all threads of state changes, even if only a few are affected, leading to inefficient synchronization in multi-threaded applications.

Innovation Solution

Implementing deferred condition evaluation (DCE) in condition variables, where threads are only notified when their specific wait condition is met, allowing only relevant threads to resume execution and reducing unnecessary context switches.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If condition variables notify all threads of state changes, then all threads can be awakened to check conditions, but this causes futile wakeups and increases lock contention

Engineering Contradiction:
Improvethread synchronization reliabilityVSAvoidcomputing performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent segments the notification process by introducing per-thread condition variables instead of a single shared condition variable. Each thread has its own condition variable that is only notified when its specific condition is met, dividing the monolithic notification mechanism into thread-specific segments. This eliminates futile wakeups where threads are notified of conditions they don't care about, directly improving computing performance while maintaining synchronization reliability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies local quality by making condition variables thread-specific rather than global. Each thread's condition variable has localized notification scope, ensuring that only the specific thread whose condition changed is awakened. This localized approach reduces unnecessary context switches and lock contention across the system, improving overall productivity while maintaining reliable thread synchronization.

Inventive Principle:
Principle #3Local quality

2Reliability

If condition variables notify all threads of state changes, then comprehensive condition checking is achieved, but this increases context switches and cache pressure

Engineering Contradiction:
Improvecondition checking completenessVSAvoidcontext switch overhead
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

By segmenting the condition variable mechanism into thread-specific instances, the patent ensures that only the relevant thread is notified when its condition changes. This segmentation maintains complete condition checking for each thread while eliminating unnecessary context switches associated with notifying and waking up threads whose conditions haven't changed, directly reducing time loss.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent extracts the notification mechanism from a global scope to a thread-specific scope. Instead of extracting and notifying all threads of every state change, the system extracts only the specific thread whose condition variable should be notified. This extraction approach maintains comprehensive condition checking while minimizing context switch overhead by involving only the necessary thread.

Inventive Principle:
Principle #2Taking out (Extraction)

3Adaptability or versatility

If condition variables notify all threads of state changes, then all threads can respond to changes, but this increases lock contention

Engineering Contradiction:
Improvethread response capabilityVSAvoidsynchronization complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent segments the synchronization mechanism into thread-specific condition variables, allowing each thread to independently respond to its own condition changes. This segmentation maintains adaptability by enabling comprehensive thread response capability while reducing synchronization complexity by eliminating the need for global notification and coordination, thereby reducing lock contention.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS20210311773A1Efficient Condition Variables via Delegated Condition Evaluation
Publication Date: 2021.10.07 ORACLE INT CORP
  • US20210311773A1 patent drawing
  • US20210311773A1 patent drawing
  • US20210311773A1 patent drawing

AI summary

Efficient use of condition variables for communication between threads of a multi-threaded application may be ensured using delegated condition evaluation. A thread in a runnable state may request to wait for a change to a condition, the request including instructions that, when executed, return a value indicating if the wait is to be terminated. The thread may then be placed in a non-runnable state waiting for a change to the condition, and upon determining a change to the condition, the instructions are executed to receive the value indicating if the wait is to be terminated. If the value indicates that the wait is to be terminated, the thread is placed in a runnable state. If the value indicates that the wait is not to be terminated, the thread remains in a non-runnable state.