Dynamically allocating threads from a thread pool to thread boundaries configured to perform a service for an event
First Claim
Patent Images
1. A method, comprising:
- determining, using a processing device, a load at a first thread boundary based on a comparison of a number of events being held at a first thread boundary queue coupled to the first thread boundary and a number of events being held in a second thread boundary queue coupled between the first thread boundary and a second thread boundary,wherein the first and second thread boundaries are configured to perform a service for an event, the first thread boundary includes at least one thread and at least one task associated with at least a part of the service, and the at least one task is dynamically configured according to a high level language description; and
dynamically allocating, using the processing device, one or more additional threads from a thread pool, separate from the first and second thread boundaries, to the first thread boundary based on the determined load, wherein the one or more additional threads perform the at least a part of the service associated with the at least one task.
3 Assignments
0 Petitions
Accused Products
Abstract
Each of a plurality of thread boundaries comprises functionality to be performed for a given event by a single thread. A plurality of queues through which events may be routed may be coupled to the thread boundaries. A plurality of tasks may be configured in a defined relationship, each task being associated with a thread boundary and comprising a unit of code for performing a specific function. Resources may be allocated to thread boundaries based on queue depth.
114 Citations
31 Claims
-
1. A method, comprising:
-
determining, using a processing device, a load at a first thread boundary based on a comparison of a number of events being held at a first thread boundary queue coupled to the first thread boundary and a number of events being held in a second thread boundary queue coupled between the first thread boundary and a second thread boundary, wherein the first and second thread boundaries are configured to perform a service for an event, the first thread boundary includes at least one thread and at least one task associated with at least a part of the service, and the at least one task is dynamically configured according to a high level language description; and dynamically allocating, using the processing device, one or more additional threads from a thread pool, separate from the first and second thread boundaries, to the first thread boundary based on the determined load, wherein the one or more additional threads perform the at least a part of the service associated with the at least one task. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A computer system for processing events, the computer system comprising:
-
a plurality of thread boundaries, wherein the plurality of thread boundaries are configured to perform a service, wherein a first thread boundary in the plurality of thread boundaries includes at least one thread and at least one task configured to perform at least a part of the service; a plurality of thread boundary queues coupled to the thread boundaries, wherein a first thread boundary queue is configured to hold one or more for routing to the first thread boundary, and wherein the first thread boundary is connected to a second thread boundary via a second thread boundary queue, and wherein the at least one task is dynamically configured according to a high level language description; and a resource allocation module configured to allocate one or more additional threads to the first thread boundary from a thread pool, separate from the plurality of thread boundaries, based on a comparison of a number of events being held in the second thread boundary queue. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. A computer system for processing events, the computer system comprising:
-
a first thread boundary comprising a first task, wherein the first task comprises processing functionality to perform a first function; a second thread boundary comprising a second thread and a second task, wherein the second task comprises processing functionality to perform a second function; a first thread boundary queue coupled to the first thread boundary; a second thread boundary queue coupled to the second thread boundary, wherein the second thread boundary queue connects the first thread boundary and the second thread boundary and enqueues one or more events routed from the first thread boundary to the second thread boundary; and a resource allocation module configured to allocate one or more additional threads from a thread pool, separate from the first and second thread boundaries, to the first and second thread boundaries, wherein one or more additional threads perform the first and second processing functions, wherein at least one of the first and second task is dynamically configured according to a high level language description, and wherein the one or more additional threads are allocated to the first thread boundary based on a comparison of a number of events being held in the first thread boundary queue with a number of events being held in the second thread boundary queue. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30)
-
-
31. A method for processing events, the method comprising:
-
receiving, using a processing device, a request for a service to be performed, wherein the request includes a first event; dividing, using the processing device, logic of an application programmed to perform the service into a plurality of thread boundaries, each including at least one thread, according to a high level language description and dynamically configuring relationships between a plurality of tasks associated with the plurality of thread boundaries, wherein the plurality of thread boundaries are connected by a plurality of queues, wherein the first event is input into a first thread boundary in the plurality of thread boundaries via a first queue in the plurality of queues, and wherein the first thread boundary outputs a second event to a second queue in the plurality of queues, wherein the second queue is coupled between the first thread boundary and a second thread boundary; determining, using the processing device, a load at the first thread boundary based on a comparison of a number of events held in the first queue with a number of events held in the second queue; and dynamically allocating, using the processing device, one or more additional threads from a thread pool, separate from the plurality of thread boundaries, to the first thread boundary based on the determined load.
-
Specification