# US 8,572,617 B2 · Processor-implemented systems and methods for event handling

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

- Number: US 8,572,617 B2
- Document ID: US8572617B2
- Status: Granted
- Kind: B2
- Application number: 12/506,718
- Filed: 2009-07-21
- Published: 2011-01-27
- Granted: 2013-10-29
- Earliest claimed: 2009-07-21
- Assignees: SAS Institute Inc.
- Applicants: Charles Scott Shorb
- Inventors: Charles Scott Shorb
- Web page: https://patentgrep.com/patent/US8572617B2

## CPC

- G06F 9/522: {Barrier synchronisation}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Processor-implemented systems and methods are provided for synchronization of a thread, wherein the thread waits for one or more events to occur before continuing execution. A processor-implemented system and method can include a wait data structure which stores event conditions in order to determine when the thread should continue execution. Event objects, executing on one or more data processors, allow for thread synchronization. A pointer is stored with respect to a wait data structure in order to provide visibility of event conditions to the event objects. The thread continues execution when the stored event conditions are satisfied.

## Claims

### Claim 1

A computer-implemented method, comprising:
initializing a group of multiple threads in a computer system, wherein the group of multiple threads execute in a multi-thread environment;
synchronizing the group of multiple threads by restricting one thread of the group from executing until multiple event conditions are satisfied, wherein each of the multiple event conditions corresponds to a different one of the multiple events;
initializing multiple event objects, wherein each of the multiple event objects stores information about a different one of the multiple events and a corresponding event condition, and wherein each of the multiple event objects is associated with multiple methods including a wait method for updating and accessing the event condition information stored by the object;
registering the multiple event objects, wherein registering an event object includes using the wait method to perform a wait operation to determine a status of an event by referencing an event condition information corresponding to the event stored by the event object and generating and storing a pointer associated with the event object;
initializing a wait data structure, wherein the wait data structure holds a counter, wherein the counter is configured to indicate when all of the multiple event conditions are satisfied, and wherein initializing includes linking a pointer to the wait data structure;
associating the one restricted thread of the group with the wait data structure;
updating the counter when an event condition is satisfied;
determining that all of the multiple event conditions are satisfied when the counter value reaches zero; and
in response to determining that all of the multiple event conditions are satisfied, ceasing to restrict the one thread of the group from executing.

### Claim 2 (depends on 1)

The method of claim 1, wherein storing a pointer provides visibility of an event condition corresponding to an event, and wherein the visibility is provided to an event object corresponding to the event.

### Claim 3 (depends on 1)

The method of claim 1, wherein synchronizing the group of multiple threads is done without an operating system lock.

### Claim 4 (depends on 1)

The method of claim 1, wherein each of the multiple event objects further includes a method for clearing event information at the event object.

### Claim 5 (depends on 1)

The system of claim 1, wherein each of the multiple event objects further includes a post method.

### Claim 6 (depends on 1)

The method of claim 1, wherein the events are asynchronous events.

### Claim 7

A system, comprising:
one or more data processors; and
one or more non transitory computer-readable storage media containing instructions configured to cause the one or more processors to perform operations including:
initializing a group of multiple threads in a computer system, wherein the group of multiple threads execute in a multi-thread environment;
synchronizing the group of multiple threads by restricting one thread of the group from executing until multiple event conditions are satisfied, wherein each of the multiple event conditions corresponds to a different one of the multiple events;
initializing multiple event objects, wherein each of the multiple event objects stores information about a different one of the multiple events and a corresponding event condition, and wherein each of the multiple event objects is associated with multiple methods including a wait method for updating and accessing the event condition information stored by the object;
registering the multiple event objects, wherein registering an event object includes using the wait method to perform a wait operation to determine a status of an event by referencing an event condition information corresponding to the event stored by the event object and generating and storing a pointer associated with the event object;
initializing a wait data structure, wherein the wait data structure holds a counter, wherein the counter is configured to indicate when all of the multiple event conditions are satisfied, and wherein initializing includes linking a pointer to the wait data structure;
associating the one restricted thread of the group with the wait data structure;
updating the counter when an event condition is satisfied;
determining that all of the multiple event conditions are satisfied when the counter value reaches zero; and
in response to determining that all of the multiple event conditions are satisfied, ceasing to restrict the one thread of the group from executing.

### Claim 8 (depends on 7)

The system of claim 7, wherein storing a pointer provides visibility of an event condition corresponding to an event, and wherein the visibility is provided to an event object corresponding to the event.

### Claim 9 (depends on 7)

The system of claim 7, wherein synchronizing the group of multiple threads is done without an operating system lock.

### Claim 10 (depends on 7)

The system of claim 7, wherein each of the multiple event objects further includes a method for clearing event information at the event object.

### Claim 11 (depends on 7)

The system of claim 7, wherein each of the multiple event objects further includes a post method.

### Claim 12 (depends on 7)

The system of claim 7, wherein the events are asynchronous events.

### Claim 13

A computer-program product tangibly embodied in a non-transitory machine readable storage medium, and including instructions configured to cause a data processing apparatus to perform operations including:
initializing a group of multiple threads in a computer system, wherein the group of multiple threads execute in a multi-thread environment;
synchronizing the group of multiple threads by restricting one thread of the group from executing until multiple event conditions are satisfied, wherein each of the multiple event conditions corresponds to a different one of the multiple events;
initializing multiple event objects, wherein each of the multiple event objects stores information about a different one of the multiple events and a corresponding event condition, and wherein each of the multiple event objects is associated with multiple methods including a wait method for updating and accessing the event condition information stored by the object;
registering the multiple event objects, wherein registering an event object includes using the wait method to perform a wait operation to determine a status of an event by referencing an event condition information corresponding to the event stored by the event object and generating and storing a pointer associated with the event object;
initializing a wait data structure, wherein the wait data structure holds a counter, wherein the counter is configured to indicate when all of the multiple event conditions are satisfied, and wherein initializing includes linking a pointer to the wait data structure;
associating the one restricted thread of the group with the wait data structure;
updating the counter when an event condition is satisfied;
determining that all of the multiple event conditions are satisfied when the counter value reaches zero; and
in response to determining that all of the multiple event conditions are satisfied, ceasing to restrict the one thread of the group from executing.

### Claim 14 (depends on 13)

The computer-program product of claim 13, wherein storing a pointer provides visibility of an event condition corresponding to an event, and wherein the visibility is provided to an event object corresponding to the event.

### Claim 15 (depends on 13)

The computer-program product of claim 13, wherein synchronizing the group of multiple threads is done without an operating system lock.

### Claim 16 (depends on 13)

The computer-program product of claim 13, wherein each of the multiple event objects further includes a method for clearing event information at the event object.

### Claim 17 (depends on 13)

The computer-program product of claim 13, wherein each of the multiple event objects further includes a post method.

### Claim 18 (depends on 13)

The computer-program product of claim 13, wherein the events are asynchronous events.
