Process-Local Thread Cache for Latency Reduction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Dynamic thread creation and destruction in multi-threaded applications lead to significant processing time and memory allocation latencies, causing scalability issues as concurrency increases.

Innovation Solution

Implementing a thread manager with a process-local cache of standby threads that reuses terminated threads for subsequent creation requests, managing the number of standby threads within defined thresholds to optimize thread creation and termination.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If dynamic thread creation and destruction is implemented, then application flexibility and responsiveness are improved, but processing time and memory allocation latencies increase significantly

Engineering Contradiction:
Improveapplication flexibilityVSAvoidthread creation latency
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The system performs preliminary actions by pre-creating threads and maintaining them in a cached standby state before they are actually needed. When thread creation is requested, the system can immediately allocate a pre-initialized thread from the cache rather than creating a new one, thus eliminating the time-consuming thread creation process while maintaining application flexibility.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Instead of completely destroying threads when they terminate, the system recovers them by placing them in a cached standby state. These recovered threads can be reused for subsequent creation requests, avoiding the need to perform full thread creation and destruction operations while maintaining adaptability.

Inventive Principle:
Principle #34Discarding and recovering

2Adaptability or versatility

If dynamic thread creation and destruction is implemented, then application flexibility is improved, but memory allocation operations increase

Engineering Contradiction:
Improveapplication flexibilityVSAvoidmemory allocation operations
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The system recovers memory resources by reusing thread objects from the cache instead of allocating new memory for each thread creation. When a thread terminates, its memory is not freed but retained in the cache for potential reuse, significantly reducing memory allocation operations while maintaining application flexibility.

Inventive Principle:
Principle #34Discarding and recovering

Solution Approach 2:

Cached threads serve multiple functions: they can be reused across different application contexts and execution scenarios. A single cached thread object can be allocated multiple times for different tasks, reducing the need for repeated memory allocation operations while maintaining adaptability to various application needs.

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

3Productivity

If thread cache is implemented, then thread creation cost is reduced, but system complexity increases

Engineering Contradiction:
Improvethread creation efficiencyVSAvoidthread management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The thread cache acts as an intermediary layer between the application and the underlying thread creation mechanisms. It abstracts the complexity of thread management by handling cache operations internally, allowing applications to request threads without directly managing the complexity of thread lifecycle and cache operations, thus improving productivity while containing complexity within the thread manager.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS20220188144A1Intra-Process Caching and Reuse of Threads
Publication Date: 2022.06.16 ORACLE INT CORP
  • US20220188144A1 patent drawing
  • US20220188144A1 patent drawing
  • US20220188144A1 patent drawing

AI summary

A computer comprising one or more processors and memory implements a thread manager for multiple threads of an application. The thread manager may implement a process-local cache of standby threads for the application. Upon request to create a thread for the application, the thread manager may use a standby thread from the process-local cache to create the requested thread, initializing thread-local storage elements and scheduling the thread for execution. Upon request to terminate a thread of the application, the thread manager may place the thread in an unscheduled state and add the thread to the process-local cache of standby threads. The thread manager may also add or remove standby threads to the process-local cache of standby threads in the event the thread manager determines that the number of standby threads in the process-local cache lies outside a target range.