Patent ID: 8069446

Claim:
A computer-readable storage medium encoded with computer-executable instructions, which, when executed, perform a method for performing a process to produce desired output data, the process comprising a first data processing operation, a second data processing operation, at least one data dependency between the first and second data processing operations, and a process representation formed by relating the first data processing operation and the second data processing operation based on at least one data dependency, the method comprising: defining a first thread comprising a first portion of the computer-executable instructions, the first thread operable to execute computer programs for performing the first and second data processing operations; defining a second thread comprising a second portion of the computer-executable instructions, the second thread operable to execute, asynchronously and concurrently with the first thread, the computer programs for performing the first and second data processing operations; at runtime of the computer-executable instructions, instantiating an executable task graph based on the process representation, the task graph comprising a first task object representing a first computer implemented method configured to perform the first data processing operation, a second task object representing a second computer implemented method configured to perform the second data processing operation, and a data object, the data object representing a portion of a memory allocated for storing available data based on the at least one data dependency, the data object having a number of states for facilitating communication between the first task object and the second task object; setting a first state of the data object; based on the first state, via the first task object, triggering execution of the first computer implemented method by the first thread or the second thread to output available data to the memory via the data object; after available data has been output to the memory, setting a second state of the data object; and based on the second state, via the second task object, triggering execution of the second computer implemented method by the first thread or the second thread to transform the available data.