Patent ID: 8024405

Claim:
A system for implementing synchronization among execution threads in a workflow, said system comprising: a memory area for storing a plurality of work items in a scheduler queue, said one or more of the plurality of work items being organized hierarchically in an activity and being associated with the activity in a workflow, each of the work items being associated with a thread of execution; a processor configured to execute computer-executable instructions for: assigning a synchronization handle to each of the plurality of work items in the scheduler queue, said synchronization handle indicating a particular shared resource to be accessed by the work item, said particular shared resource being accessed by one or more of the work items, such that two or more work items in the scheduler queue have identical synchronization handles; organizing each of the work items with the assigned synchronization handle as a virtual execution thread comprised of said work items, each of the work items in the virtual execution thread having an assigned synchronization handle identical to the synchronization handles assigned to the other work items in the virtual execution thread; for each of the work items, computing a token value based on the assigned synchronization handle and a location of the work item in the hierarchy of work items in the activity; sorting the work items into a synchronization queue based on the computed token value associated with each of the work items; sequentially executing the virtual execution thread of each of the sorted work items in the synchronization queue to serialize access to the particular shared resource and effect a synchronous execution of the virtual execution threads associated with the work items; determining, while sequentially executing the virtual execution thread of each of the sorted work items in the synchronization queue, that the executing virtual execution thread requires passivation; and upon determining that the executing virtual execution thread requires passivation, passivating the synchronization queue by storing the work items and the associated token values to a data store.