Task Synchronizer Module for Merging Thread Calls

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multithreaded programming, when multiple threads make identical calls to execute the same code segment, traditional locking mechanisms lead to inefficiencies as threads wait for their turn, consuming excessive computing resources and bandwidth due to simultaneous competition for network resources.

Innovation Solution

A task synchronizer module synchronizes and joins multiple calls from different threads to execute a code segment, where only the first thread executes the code, and others wait, allowing resource reuse while storing the result in a task object for later retrieval, thus optimizing resource usage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional locking mechanisms are used to synchronize multiple threads, then thread safety is ensured, but processing efficiency deteriorates due to threads waiting for their turn

Engineering Contradiction:
Improvethread safetyVSAvoidprocessing efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

Multiple thread calls to the same asynchronous code segment are merged into a single execution. The task synchronizer detects when multiple threads request the same code segment and consolidates them, so only one thread executes the code while others wait for the result, eliminating redundant executions and improving efficiency while maintaining thread safety

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The result of the code segment execution is copied and made available to all waiting threads. Instead of having each thread execute the code independently, the execution result is captured and distributed to all threads that requested it, ensuring thread safety through result sharing rather than repeated execution

Inventive Principle:
Principle #26Copying

2Ease of operation

If multiple threads execute the same code independently, then each thread gets its turn to run, but resource consumption increases due to redundant computations

Engineering Contradiction:
Improvethread independenceVSAvoidcomputing resource consumption
Core Design Contradiction:
Ease of operationVSUse of energy by moving object

Solution Approach 1:

Redundant code executions are merged by having the task synchronizer intercept multiple calls to the same asynchronous code segment and consolidate them into a single execution, dramatically reducing computing resource consumption while maintaining the appearance of thread independence through result distribution

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The task synchronizer performs preliminary detection of multiple thread calls before execution occurs. By identifying that multiple threads will execute the same code segment, it can prepare a single execution that serves all threads, preventing wasteful redundant computations from occurring in the first place

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If threads compete for network resources simultaneously, then each thread accesses network independently, but bandwidth efficiency deteriorates due to redundant network operations

Engineering Contradiction:
Improvethread autonomyVSAvoidbandwidth consumption
Core Design Contradiction:
Adaptability or versatilityVSLoss of energy

Solution Approach 1:

Multiple threads' network operations are merged by having the task synchronizer consolidate identical network requests. When multiple threads request the same asynchronous code segment that performs network operations, only one actual network request is made, and the result is shared among all threads, eliminating redundant bandwidth consumption while preserving thread autonomy through result copying

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS10761904B2Method and system for synchronizing and joining multiple calls to the same asynchronous code segment
Publication Date: 2020.09.01 SALESFORCE INC
  • US10761904B2 patent drawing
  • US10761904B2 patent drawing
  • US10761904B2 patent drawing

AI summary

Technologies are provided for synchronizing and joining multiple calls from a first thread and one or more second threads to execute a particular code segment. In response to a call from the first thread to execute the particular code segment, a task synchronizer module calls the particular code segment on behalf of the first thread. When execution of the particular code segment starts, and a call is received from a second thread to execute the particular code segment after receiving the call from the first thread, the task synchronizer module suspends execution of the particular code segment so that the second thread awaits for the execution of the particular code segment on behalf of the first thread to complete. When execution completes, a result value or exception is stored in a task object, and the second thread can read the result value or the exception.