# US 2014/0156736 A1 · Apparatus and method for managing threads to perform divided execution of software

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0156736 A1
- Document ID: US20140156736A1
- Status: Published application
- Kind: A1
- Application number: 14/047,457
- Filed: 2013-10-07
- Published: 2014-06-05
- Earliest claimed: 2012-11-30
- Assignees: Electronics and Telecommunications Research Institute
- Applicants: Electronics and Telecommunications Research Institute
- Inventors: Moon-Young CHUNG; Won-Young KIM; Su-Min JANG; Won-Hyuk CHOI
- Web page: https://patentgrep.com/patent/US20140156736A1

## CPC

- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Disclosed herein are an apparatus and method for managing threads to perform the divided execution of software. The apparatus includes a server-side thread management apparatus and a client-side thread management apparatus. The server-side thread management apparatus includes a server execution unit, a server device management unit, and a server connection management unit. The server execution unit executes software to be executed in a divided manner, and generates and manages one or more threads for processing one or more of graphics and sound processing functions of the executed software. The server device management unit extracts one or more of a function related to a graphics task and a function related to a sound task from the software. The server connection management unit sends the one or more functions, extracted by the server device management unit, to a client-side thread management apparatus via the threads generated by the server execution unit.

## Claims

### Claim 1

A server-side thread management apparatus, comprising:
a server execution unit configured to execute software to be executed in a divided manner, and to generate and manage one or more threads for processing one or more of graphics and sound processing functions of the executed software;
a server device management unit configured to extract one or more of a function related to a graphics task and a function related to a sound task from the software; and
a server connection management unit configured to send the one or more functions, extracted by the server device management unit, to a client-side thread management apparatus via the threads generated by the server execution unit.

### Claim 2 (depends on 1)

The server-side thread management apparatus of claim 1, wherein the server execution unit generates a data storage thread and a data operation thread that process functions corresponding to data-intensive processing of the executed software.

### Claim 3 (depends on 1)

The server-side thread management apparatus of claim 1, wherein the server execution unit:
generates the one or more threads for processing one or more of the function related to the graphics task and the function related to the sound task that have been extracted by the server device management unit;
requests the client-side thread management apparatus to generate threads corresponding to the generated one or more threads; and
generates a plurality of threads for processing client input received from the client-side thread management apparatus.

### Claim 4 (depends on 1)

The server-side thread management apparatus of claim 1, wherein the server device management unit includes:
a graphics task extraction module configured to extract the function related to the graphics task from the executed software, and to send the extracted function related to the graphics task to the server connection management unit;
a sound task extraction module configured to extract the function related to the sound task from the executed software, and to send the extracted function related to the sound task to the server connection management unit; and
a client input processing module configured to process client input received from the server connection management unit.

### Claim 5 (depends on 1)

The server-side thread management apparatus of claim 1, wherein the server connection management unit includes:
a graphics task transmission module configured to send the function related to the graphics task, received from the server device management unit, to the client-side thread management apparatus via the thread generated from the server execution unit;
a sound task transmission module configured to send the function related to the sound task, received from the server device management unit, to the client-side thread management apparatus via the thread generated from the server execution unit; and
a client input reception module configured to receive client input from the client-side thread management apparatus via the thread generated from the server execution unit, and to send the received client input to the server device management unit.

### Claim 6

A client-side thread management apparatus, comprising:
a client execution unit configured to request a server-side thread management apparatus to execute software, to generate one or more threads corresponding to one or more threads executed by the server-side thread management apparatus in response to a request from the server-side thread management apparatus, and to manage the generated one or more threads;
a client connection management unit configured to receive one or more of a function related to a graphics task and a function related to a sound task from the server-side thread management apparatus via the generated threads; and
a client device management unit configured to process the one or more functions, received from the client connection management unit, via the one or more threads generated by the client execution unit.

### Claim 7 (depends on 6)

The client-side thread management apparatus of claim 6, wherein the client execution unit generates threads for processing client input, and requests the server-side thread management apparatus to generate one or more threads corresponding to the generated threads.

### Claim 8 (depends on 7)

The client-side thread management apparatus of claim 7, wherein:
the client device management unit receives the client input, and sends the received client input to the client connection management unit; and
the client connection management unit sends the received client input to the server-side thread management apparatus via the generated threads.

### Claim 9 (depends on 6)

The client-side thread management apparatus of claim 6, wherein the client connection management unit includes:
a graphics task reception module configured to send the function related to the graphics task, received from the server-side thread management apparatus, to the client device management unit via the threads generated by the client execution unit;
a sound task reception module configured to send the function related to the sound task, received from the server-side thread management apparatus, to the client device management unit via the threads generated by the client execution unit; and
a client input transmission module configured to send client input, received from the client device management unit, to the server-side thread management apparatus via the generated threads.

### Claim 10 (depends on 6)

The client-side thread management apparatus of claim 6, wherein the client device management unit includes:
a graphics task processing module configured to process the function related to the graphics task received from the client connection management unit;
a sound task processing module configured to process the function related to the sound task received from the client connection management unit; and
a client input extraction module configured to extract client input, and to send the extracted client input to the client connection management unit.

### Claim 11

A method of managing threads to perform divided execution of software, comprising:
executing, by a server-side thread management apparatus, software in response to a software execution request received from a client-side thread management apparatus;
extracting, by the server-side thread management apparatus, one or more of a function related to a graphics task and a function related to a sound task from the executed software, and sending, by the server-side thread management apparatus, the extracted one or more functions to the client-side thread management apparatus via one or more threads; and
receiving, by the client-side thread management apparatus, the one or more functions via threads, and processing, by the client-side thread management apparatus, the received one or more functions.

### Claim 12 (depends on 11)

The thread management method of claim 11, wherein extracting the one or more of the function related to the graphics task and the function related to the sound task and sending the extracted one or more functions includes:
generating, by the server-side thread management apparatus, the one or more threads for processing one or more of the function related to the graphics task and the function related to the sound task, and executing, by the server-side thread management apparatus, the generated one or more threads;
requesting, by the server-side thread management apparatus, the client-side thread management apparatus to generate threads corresponding to the executed threads;
extracting, by the server-side thread management apparatus, one or more of the function related to the graphics task and the function related to the sound task from the executed software;
storing, by the server-side thread management apparatus, the extracted one or more functions; and
detecting, by the server-side thread management apparatus, the stored one or more functions and, by the server-side thread management apparatus, processing the detected one or more functions.

### Claim 13 (depends on 12)

The thread management method of claim 12, wherein storing the extracted one or more functions includes storing, by the server-side thread management apparatus, the extracted one or more functions in a synchronous/asynchronous buffer when the extracted function is a void function.

### Claim 14 (depends on 12)

The thread management method of claim 12, wherein detecting the stored one or more functions and processing the detected one or more functions includes:
detecting, by the server-side thread management apparatus, functions stored in a synchronous/asynchronous buffer when the synchronous/asynchronous buffer for storing the functions is in a full state; and
sending, by the server-side thread management apparatus, the detected functions to the client-side thread management apparatus.

### Claim 15 (depends on 12)

The thread management method of claim 12, wherein detecting the stored one or more functions and processing the detected one or more functions includes sending, by the server-side thread management apparatus, the extracted one or more functions and functions stored in a synchronous/asynchronous buffer to the client-side thread management apparatus when the extracted functions are not void functions.

### Claim 16 (depends on 15)

The thread management method of claim 15, wherein detecting the stored one or more functions and processing the detected one or more functions further includes receiving, by the server-side thread management apparatus, results of processing of the transmitted functions from the client-side thread management apparatus.

### Claim 17 (depends on 11)

The thread management method of claim 11, wherein receiving the one or more functions and processing the received one or more functions includes:
generating, by the client-side thread management apparatus, a reception-dedicated thread and a function processing thread in response to a thread generation request from the server-side thread management apparatus, and executing, by the client-side thread management apparatus, the reception-dedicated thread and the function processing thread;
receiving, by the client-side thread management apparatus, a function via the reception-dedicated thread, and storing, by the client-side thread management apparatus, the received function in an asynchronous buffer; and
processing, by the client-side thread management apparatus, a function received via the function processing thread.

### Claim 18 (depends on 17)

The thread management method of claim 17, wherein processing the function received via the function processing thread includes:
checking, by the client-side thread management apparatus, whether the function received via the function processing thread is a function to be executed next;
storing, by the client-side thread management apparatus, the received function in a synchronous buffer if the function received via the function processing thread is a function to be executed next; and
extracting, by the client-side thread management apparatus, a function to be executed next from the synchronous buffer and the asynchronous buffer.

### Claim 19 (depends on 18)

The thread management method of claim 18, wherein processing the function received through the function processing thread further includes processing, by the client-side thread management apparatus, the function determined to be a function to be executed next or the function extracted from the synchronous buffer and the asynchronous buffer.

### Claim 20 (depends on 19)

The thread management method of claim 19, wherein processing the function received through the function processing thread further includes sending, by the client-side thread management apparatus, results of the processed function to the server-side thread management apparatus when the processed function is not a void function.
