Patent ID: 8312467

Claim:
A method for executing an application in parallel, comprising: instantiating, by a first thread, a first executable object and a second executable object; creating a first processing unit corresponding to the first thread, wherein the first processing unit is a run-time data structure for tracking at least the first executable object and the second executable object; instantiating an executable container object, wherein only executable objects within the executable container object may be executed concurrently; spawning a second thread; creating a second processing unit corresponding to the second thread; associating the first executable object and the second executable object with the executable container object, wherein associating the first executable object and the second executable object with the executable container object designates the first executable object and the second executable object for parallel execution; processing the executable container object to generate a result, wherein processing the executable container object comprises: inserting the first executable object and the second executable object into a local open container of the first processing unit, wherein a local open container is a run-time data structure that is a type of executable container object for tracking executable objects that have not been processed or that are partially processed; processing, using a first hardware processing device, the first executable object by the first thread; detecting that a local open container of the second processing unit is empty; moving, while processing the first executable object and in response to detecting that the local open container of the second processing unit is empty, the second executable object from the local open container of the first processing unit to the local open container of the second processing unit; and processing, using a second hardware processing device, the second executable object by the second thread in parallel with the first executable object, wherein the first thread processes executable objects associated with the first processing unit, wherein the second thread processes executable objects associated with the second processing unit, and wherein the first thread and the second thread execute in parallel; and storing the result.