# US 2014/0157278 A1 · Thread folding tool

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

- Number: US 2014/0157278 A1
- Document ID: US20140157278A1
- Status: Published application
- Kind: A1
- Application number: 14/090,660
- Filed: 2013-11-26
- Published: 2014-06-05
- Earliest claimed: 2009-11-23
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Kirk J. Krauss
- Web page: https://patentgrep.com/patent/US20140157278A1

## CPC

- G06F 9/46: Multiprogramming arrangements
- G06F 9/48: Program initiating; Program switching, e.g. by interrupt
- G06F 9/4843: {by program, e.g. task dispatcher, supervisor, operating system}
- G06F 9/485: {Task life-cycle, e.g. stopping, restarting, resuming execution (G06F9/4881 takes precedence)}
- G06F 9/52: Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F 11/3017: {where the computing system is implementing multitasking (multiprogramming arrangements G06F9/46; allocation of resources G06F9/50)}
- G06F 11/3072: {where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting}
- G06F 11/3089: {Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents (software debugging using additional hardware using a specific debug interface G06F11/3656; performance evaluation by tracing or monitoring G06F11/3466)}
- G06F 11/3612: {by runtime analysis (performance monitoring G06F11/3466)}
- G06F 11/3466: {Performance evaluation by tracing or monitoring}
- G06F 11/3644: {by instrumenting at runtime}
- G06F 2201/865: Monitoring of software
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A computer-implemented method of performing runtime analysis on and control of a multithreaded computer program. One embodiment of the present invention can include identifying threads of a computer program to be analyzed. Under control of a supervisor thread, a plurality of the identified threads can be folded together to be executed as a folded thread. The execution of the folded thread can be monitored to determine a status of the identified threads. An indicator corresponding to the determined status of the identified threads can be presented in a user interface that is presented on a display.

## Claims

### Claim at position 1

1-20. (canceled)

### Claim 21

A computer-implemented method for performing runtime analysis and runtime control of a multithreaded computer program, comprising:
folding, under control of a supervisor thread, a plurality of the threads together to be executed as a single folded thread;
monitoring the execution of the folded thread to determine a status of the threads; and
presenting in a user interface at least one indicator corresponding to the determined status of the threads.

### Claim 22 (depends on 21)

The method of claim 21, further comprising:
identifying, in a list of folded threads, a first thread that is currently executing; and
identifying a thread tracking structure associated with the first thread.

### Claim 23 (depends on 22)

The method of claim 22, wherein
state data of the first thread is stored to a memory location.

### Claim 24 (depends on 23)

The method of claim 23, wherein
the memory location is indicated by a thread tracking structure associated with the first thread.

### Claim 25 (depends on 21)

The method of claim 21, wherein
the folding includes
copying state data of a second thread of the threads, and
applying the copied state data to be used as state data for a first thread of the threads.

### Claim 26 (depends on 25)

The method of claim 25, further comprising:
suspending the first thread; and
suspending the second thread, wherein
the copying the state data is performed by a supervisor thread while both the first and second threads are suspended.

### Claim 27 (depends on 26)

The method of claim 26, wherein
execution of the first thread is reinitiated.

### Claim 28 (depends on 25)

The method of claim 25, further comprising:
selecting, as the second thread, a thread that is next to the first thread in a list of folded threads.

### Claim 29 (depends on 25)

The method of claim 25, wherein
the applying the copied state includes storing the copied state data to a memory location indicated by a thread tracking structure associated with the first thread.
