Mechanism for enabling a thread unaware or non thread safe application to be executed safely in a multi-threaded environment
First Claim
1. A computer implemented method for executing an application in a multi-threaded environment, comprising:
- allocating a thread pool, said thread pool having one thread allocated therein;
receiving a first request for execution of an application;
associating the first request with said thread pool; and
executing the application using said one thread from said thread pool;
wherein the application is either a thread unaware application or a non-thread-safe application.
3 Assignments
0 Petitions
Accused Products
Abstract
Executing a thread unaware or non-thread-safe application in a multi-threaded environment is potentially hazardous. If multiple instances of the thread unaware application are executed concurrently in the same process space, as may be the case in a multi-threaded environment, one instance may try to modify or overwrite the information used by the other instance, which can lead to serious errors. To enable a thread unaware application to be executed safely in a multi-threaded environment, multiple thread pools are implemented. That is, for each thread-unaware or non-thread-safe application, a separate thread pool is defined and associated with the application. Unlike other thread pools, though, this thread pool has its maximum number of threads parameter set to “1”. By limiting the number of threads in the pool to 1, it is guaranteed that there will be no more than one instance of the thread unaware application executing at any one time. This in turn precludes any possibility of one instance of the application overwriting or modifying the information used by another. By implementing thread pools in this manner, execution of the thread-unaware application in a multi-threaded environment is made safe.
71 Citations
18 Claims
-
1. A computer implemented method for executing an application in a multi-threaded environment, comprising:
-
allocating a thread pool, said thread pool having one thread allocated therein;
receiving a first request for execution of an application;
associating the first request with said thread pool; and
executing the application using said one thread from said thread pool;
wherein the application is either a thread unaware application or a non-thread-safe application. - View Dependent Claims (2, 3, 4, 5, 6)
determining whether said one thread from said thread pool is currently available;
in response to a determination that said one thread is not currently available, waiting until said one thread becomes available; and
executing the application using said one thread from said thread pool.
-
-
3. The method of claim 1, wherein associating comprises:
-
extracting a set of indication information from the first request; and
using said set of indication information to associate the first request with said thread pool.
-
-
4. The method of claim 3, where said set of indication information comprises at least a portion of a universal resource identifier (URI).
-
5. The method of claim 1, further comprising:
-
allocating a second thread pool, said second thread pool having one or more threads allocated therein;
receiving a second request for service;
associating the second request with said second thread pool; and
servicing the second request using a thread from said second thread pool.
-
-
6. The method of claim 5, wherein servicing comprises:
executing a thread-safe application using a thread from said second thread pool.
-
7. An apparatus for executing an application in a multi-threaded environment, comprising:
-
a mechanism for allocating a thread pool, said thread pool having one thread allocated therein;
a mechanism for receiving a first request for execution of an application;
a mechanism for associating the first request with said thread pool; and
a mechanism for executing the application using said one thread from said thread pool;
wherein the application is either a thread unaware application or a non-thread-safe application. - View Dependent Claims (8, 9, 10, 11, 12)
a mechanism for determining whether said one thread from said thread pool is currently available;
a mechanism for waiting, in response to a determination that said one thread is not currently available, until said one thread becomes available; and
a mechanism for executing the application using said one thread from said thread pool.
-
-
9. The apparatus of claim 7, wherein the mechanism for associating comprises:
-
a mechanism for extracting a set of indication information from the first request; and
a mechanism for using said set of indication information to associate the first request with said thread pool.
-
-
10. The apparatus of claim 9, where said set of indication information comprises at least a portion of a universal resource identifier (URI).
-
11. The apparatus of claim 7, further comprising:
-
a mechanism for allocating a second thread pool, said second thread pool having one or more threads allocated therein;
a mechanism for receiving a second request for service;
a mechanism for associating the second request with said second thread pool; and
a mechanism for servicing the second request using a thread from said second thread pool.
-
-
12. The apparatus of claim 7, wherein the mechanism for servicing comprises:
a mechanism for executing a thread-safe application using a thread from said second thread pool.
-
13. A computer readable medium having stored thereon instructions which, when executed by one or more processors, cause the one or more processors to execute an application in a multi-threaded environment, said computer readable medium comprising:
-
instructions for causing one or more processors to allocate a thread pool, said thread pool having one thread allocated therein;
instructions for causing one or more processors to receive a first request for execution of an application;
instructions for causing one or more processors to associate the first request with said thread pool; and
instructions for causing one or more processors to execute the application using said one thread from said thread pool;
wherein the application is either a thread unaware application or a non-thread-safe application. - View Dependent Claims (14, 15, 16, 17, 18)
instructions for causing one or more processors to determine whether said one thread from said thread pool is currently available;
instructions for causing one or more processors to wait, in response to a determination that said one thread is not currently available, until said one thread becomes available; and
instructions for causing one or more processors to execute the application using said one thread from said thread pool.
-
-
15. The computer readable medium of claim 13, wherein the instructions for causing one or more processors to associate comprises:
-
instructions for causing one or more processors to extract a set of indication information from the first request; and
instructions for causing one or more processors to use said set of indication information to associate the first request with said thread pool.
-
-
16. The computer readable medium of claim 15, where said set of indication information comprises at least a portion of a universal resource identifier (URI).
-
17. The computer readable medium of claim 13, further comprising:
-
instructions for causing one or more processors to allocate a second thread pool, said second thread pool having one or more threads allocated therein;
instructions for causing one or more processors to receive a second request for service;
instructions for causing one or more processors to associate the second request with said second thread pool; and
instructions for causing one or more processors to service the second request using a thread from said second thread pool.
-
-
18. The computer readable medium of claim 17, wherein the instructions for causing one or more processors to service comprises:
instructions for causing one or more processors to execute a thread-safe application using a thread from said second thread pool.
Specification