Patent ID: 8209701

Claim:
A method comprising: maintaining a pool of multiple processing threads; receiving a request to initiate execution of a task; processing the task to identify portions of the task to be executed by separate processing threads according to shared resources required for execution, wherein processing the task to identify portions of the task to be executed by separate processing threads includes: processing the task to identify a main portion of the task; and processing the task to identify sub-tasks associated with the main portion of the task, each of the sub-tasks being an identified portion of the task to be executed by a corresponding processing thread in the pool; monitoring the pool of multiple processing threads; in response to detecting that a sufficient number of processing threads have freed up for simultaneous execution of each of the identified portions of the task in parallel, submitting the task for execution by the pool of multiple processing threads; and assigning a first processing thread of the pool to receive the submitted task, the first processing thread, upon receipt of the submitted task, initiating execution of the main portion of the task, execution of the main portion of the task by the first processing thread in the pool spawning execution of multiple sub-tasks associated with the task.