IP Library Granted Patent US 8,181,183
Granted Patent B2
US 8,181,183 · App. 11/071,487 · Granted May 15, 2012

Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations

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 8,181,183
App. No.
11/071,487
Granted
May 15, 2012
Kind
B2
Abstract

Deadlock situations within a computing environment are avoided by properly managing pools of threads used to service requests of the computing environment. When a server of the computing environment receives a request to be processed and that request is waiting on a response from a client of the computing environment, the set of eligible thread pools for the response is dynamically altered. This dynamic altering allows the response to be serviced by a thread pool different from the thread pool servicing the request, thereby avoiding a deadlock situation.

Claims (39)

1. A method of managing thread pools of a computing environment, the method comprising:

selecting, from a plurality of thread pools, a set of eligible thread pools to which incoming requests from a client are to be dispatched for processing, the set of eligible thread pools comprising at least one primary thread pool and at least one supplemental thread pool, the at least one supplemental thread pool being included in the set of eligible thread pools responsive to at least one callback response being expected from the client and to facilitate avoiding deadlock;

receiving a request from the client and dispatching the request to a thread pool of the set of eligible thread pools, wherein the dispatching is performed without any indication from the client of which thread pool is to be used for processing the request;

responsive to the thread pool to which the request was dispatched being a supplemental thread pool of the at least one supplemental thread pool, dynamically determining whether to redispatch the request from the supplemental thread pool to a primary thread pool of the set of eligible thread pools, wherein the dynamically determining comprises determining whether the request comprises the callback response expected from the client; and

responsive to determining that the request does not comprise the callback response expected from the client, redispatching the request from the supplemental thread pool to a primary thread pool of the at least one primary thread pool of the set of eligible thread pools for the client, to facilitate avoiding deadlock.

2. The method of claim 1 , wherein the redispatching dispatches the request to the primary thread pool, and wherein the method further comprises processing the request using a thread of the primary thread pool.

3. The method of claim 1 , wherein responsive to determining that the request does comprise the callback response expected from the client, the method further comprises processing the request using a thread of the supplemental thread pool.

4. The method of claim 1 , wherein the at least one supplemental thread pool is dynamically included in the set of eligible thread pools for the client responsive to the callback response being expected from the client.

5. The method of claim 4 , further comprising dynamically excluding the at least one supplemental thread pool from the set of eligible thread pools for the client responsive to the callback response not being expected from the client.

6. The method of claim 1 , wherein the at least one supplemental thread pool is dynamically included in the set of eligible thread pools for the client responsive to a callback request being sent to the client.

7. The method of claim 6 , wherein the callback response is in response to the callback request sent to the client.

8. The method of claim 1 , wherein the selecting comprises including the at least one supplemental thread pool in the set of eligible thread pools for the client responsive to a callback request being issued to the client.

9. The method of claim 1 , wherein the method further comprises, responsive to determining that the response comprises a callback response, decrementing a count of the callback responses expected from the client.

10. The method of claim 9 , further comprising determining, subsequent to the decrementing, whether the decremented count of callback responses expected from the client is equal to zero, and responsive to the count of callback responses expected from the client being zero, reselecting the set of eligible thread pools for the client, wherein the reselecting excludes the at least one supplemental thread pool from the set of eligible thread pools for the client.

11. A computer system for managing thread pools of a computing environment, the computer system comprising:

a memory; and

a processor, in communications with the memory, wherein the computer system is configured to perform a method comprising:

selecting, from a plurality of thread pools, a set of eligible thread pools to which incoming requests from a client are to be dispatched for processing, the set of eligible thread pools comprising at least one primary thread pool and at least one supplemental thread pool, the at least one supplemental thread pool being included in the set of eligible thread pools responsive to at least one callback response being expected from the client and to facilitate avoiding deadlock;

receiving a request from the client and dispatching the request to a thread pool of the set of eligible thread pools, wherein the dispatching is performed without any indication from the client of which thread pool is to be used for processing the request;

responsive to the thread pool to which the request was dispatched being a supplemental thread pool of the at least one supplemental thread pool, dynamically determining whether to redispatch the request from the supplemental thread pool to a primary thread pool of the set of eligible thread pools, wherein the dynamically determining comprises determining whether the request comprises the callback response expected from the client; and

responsive to determining that the request does not comprise the callback response expected from the client, redispatching the request from the supplemental thread pool to a primary thread pool of the at least one primary thread pool of the set of eligible thread pools for the client, to facilitate avoiding deadlock.

12. The computer system of claim 11 , wherein the at least one supplemental thread pool is dynamically included in the set of eligible thread pools for the client responsive to a callback request being sent to the client, and wherein the callback response is in response to the callback request sent to the client.

13. The computer system of claim 11 , wherein the selecting comprises including the at least one supplemental thread pool in the set of eligible thread pools for the client responsive to a callback request being issued to the client.

14. The computer system of claim 11 , wherein, responsive to determining that the response comprises the callback response, the method further comprises:

decrementing a count of callback responses expected from the client;

determining, subsequent to the decrementing, whether the decremented count of callback responses expected from the client is equal to zero; and

responsive to the count of callback responses expected from the client being zero, reselecting the set of eligible thread pools for the client, wherein the reselecting excludes the at least one supplemental thread pool from the set of eligible thread pools.

15. A computer program product for managing thread pools of a computing environment, the computer program product comprising:

a tangible storage medium readable by a processor and storing instructions for execution by the processor for performing a method comprising:

selecting, from a plurality of thread pools, a set of eligible thread pools to which incoming requests from a client are to be dispatched for processing, the set of eligible thread pools comprising at least one primary thread pool and at least one supplemental thread pool, the at least one supplemental thread pool being included in the set of eligible thread pools responsive to at least one callback response being expected from the client and to facilitate avoiding deadlock;

receiving a request from the client and dispatching the request to a thread pool of the set of eligible thread pools, wherein the dispatching is performed without any indication from the client of which thread pool is to be used for processing the request;

responsive to the thread pool to which the request was dispatched being a supplemental thread pool of the at least one supplemental thread pool, dynamically determining whether to redispatch the request from the supplemental thread pool to a primary thread pool of the set of eligible thread pools, wherein the dynamically determining comprises determining whether the request comprises the callback response expected from the client; and

responsive to determining that the request does not comprise the callback response expected from the client, redispatching the request from the supplemental thread pool to a primary thread pool of the at least one primary thread pool of the set of eligible thread pools for the client, to facilitate avoiding deadlock.

16. The computer program product of claim 15 , wherein the at least one supplemental thread pool is dynamically included in the set of eligible thread pools for the client responsive to a callback request being sent to the client, and wherein the callback response is in response to the callback request sent to the client.

17. The computer program product of claim 15 , wherein the selecting comprises including the at least one supplemental thread pool in the set of eligible thread pools for the client responsive to a callback request being issued to the client.

18. The computer system of claim 15 , wherein, responsive to determining that the response comprises the callback response, the method further comprises:

decrementing a count of callback responses expected from the client;

determining, subsequent to the decrementing, whether the decremented count of callback responses expected from the client is equal to zero; and

responsive to the count of callback responses expected from the client being zero, reselecting the set of eligible thread pools for the client, wherein the reselecting excludes the at least one supplemental thread pool from the set of eligible thread pools.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 24, 2024
From: DAEDALUS BLUE LLC
To: TAIWAN SEMICONDUCTOR MANUFACTURING COMPANY, LIMITED
Reel/Frame 069237/0643 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2020
From: DAEDALUS GROUP, LLC
To: DAEDALUS BLUE LLC
Reel/Frame 051737/0191 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: DAEDALUS GROUP, LLC
Reel/Frame 051710/0445 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: DAEDALUS GROUP LLC
Reel/Frame 051032/0784 →