IP Library Granted Patent US 12688063
Granted Patent B1
US 12688063 · App. 17/938,586 · Granted Jul 21, 2026

Asynchronous and parallel application processing

Inventors: James Wilbert Devine (Columbus, OH); Daniel Craig Manges (Powell, OH)
Assignee: CARET HOLDINGS, INC.
G06F9/4881G06F16/211G06F16/2282G06F16/2474
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12688063
App. No.
17/938,586
Granted
Jul 21, 2026
Kind
B1
Abstract

Input records are obtained based on a request to process an application. References to the input records are stored as entries in a queue. A total thread number for threads and a total server number for servers are determined. The threads are initiated on the servers and are asynchronously processed in parallel on the servers. Each thread obtains a reference from a unique entry of the queue, marks that entry as being addressed, processes the input record corresponding to the entry using values provided with a request to process the application, stores results associated with processing the input record in a data store, and iterates back to obtain a next unique entry from the queue until every entry of the queue is marked as having been addressed. When every entry of the queue is marked, a reference is returned to the data store as application results for processing the application.

Claims (17)

1 . A method, comprising:

initiating a total number of asynchronous threads on a total number of servers, wherein each asynchronous thread processes a portion of input data provided to an application, and wherein the asynchronous threads as a whole perform a portion of processing for the application, and

dynamically changing one or more of the total number of asynchronous threads and the total number of servers after the initiating based on real-time adjustments to processing resources, wherein the adjustments are determined by a CPU or memory manager of the servers that monitors real-time processor and memory loads and configures the asynchronous threads to optimize processing throughput and reduce completion time for the application,

wherein each thread asynchronously performs processing in parallel further comprises;

dynamically changing:

the total number of the asynchronous threads, the total number of the servers processing the asynchronous threads, or a total-number-of threads per server based on the real-time processor loads or memory loads associated with the servers;

wherein the dynamic changing occurs while the application is being processed to optimize processing throughput and reduce completion time for the application by monitoring memory load on each server as worker threads associated with that server are processed, and when the memory load reaches a threshold configured level, acquiring a new server and initiating new threads on the new server;

wherein the CPU or memory manager sends a message to an application manager when the threshold configured level is reached, and the application manager notifies instances of the asynchronous threads on the corresponding server to finish processing and terminate, and the application manager initiates different instances of the terminated asynchronous threads on the new server;

wherein the application is an on-leveling application or set of processes.

2 . The method of claim 1 further comprising:

storing results received from the asynchronous threads in a data store as each asynchronous thread completes processing a corresponding portion of the input data; and

providing a reference to the data store as output to the application for the portion when a last asynchronous thread completes processing.

3 . The method of claim 1 , wherein initiating further includes receiving the total number of the asynchronous threads as a user-provided input through an interface.

4 . The method of claim 3 , wherein receiving further includes determining the total number of servers based on the total number of asynchronous threads received as the user-provided input through the interface.

5 . The method of claim 1 , wherein dynamically changing further includes modifying one or more of the total number of asynchronous threads and the total number of servers based on processing loads for processors of the servers and memory loads for memories of the servers.

6 . The method of claim 1 , wherein dynamically changing further includes modifying the total number of servers based on a modified total number of asynchronous threads received from a user through an interface.

7 . The method of claim 1 , wherein initiating further includes calculating an estimated time of completion for the application based on processor and memory loads for the total number of servers and based on the total number of asynchronous threads and providing the estimated time of completion to a user through an interface.