Patent ID: 7389507

Claim:
A computer readable storage medium carrying computer program code, the computer program code comprising: program code that implements one or more tasks, each task being a program that is run in sequence by being branched to from code outside it and branching to code outside it after it ends; program code that implements one or more task queues, each task queue comprising a task queue program and a first queue containing zero or more tasks, wherein the task queue program is run by being branched to from code outside it to its beginning, wherein if the first queue contains at least one task, the task queue program runs the first task in the first queue and removes that task from the first queue, and wherein if the first queue contains no tasks, the task queue program ends by branching to code outside it; program code that implements zero or more condition queues, each condition queue comprising a condition queue program and a second queue containing zero or more tasks and associated conditions, wherein the condition queue program is run by being branched to from code outside it, wherein if the second queue contains at least one task and the associated condition, the condition queue program determines the validity of the conditions associated with the tasks in order, wherein if the condition is true, the condition queue program removes the task from the condition queue and places the task in a task queue, and wherein if the second queue contains no tasks, the condition queue program ends by branching to code outside it; wherein at least one of the tasks in one of the task queues includes task ending code that refers to a successor task, wherein running the task ending code causes the successor task to be run or placed in one of the task queues or one of the condition queues, and program code that implements a fan construct, the fan construct being a portion of a parent task that references zero or more child tasks, the fan construct including a parent-global fan end counter and a parent-global fan end task, wherein the parent task either runs the code of each child task or places the child task in a task queue, wherein each child task references zero or more successor tasks to form a child sequence, and wherein the parent-global fan end counter indicates the number of child sequences not yet completed; and program code that implements an end fan component in the last task of each child sequence, the end fan component decrementing the parent-global fan end counter, the end fan component further evaluating the parent-global fan end counter and placing the parent-global fan end task in a task queue if the parent-global fan end counter indicates that all child tasks have been completed.