1. A method of synchronizing a group of tasks executed by an execution unit, said method comprising: each task in said group of tasks making an initial determination of one or more paths that said each task expects to follow; each task in said group of tasks declaring need to access a shared resource via a signal in a plurality of signals, based on said initial determination; granting access to said shared resource, based on the plurality of signals, to a second task in said group after a first task in said group declares via another signal no need to access said shared resource; said first task executing without accessing said shared resource; said second task accessing said shared resource only after said granting; and a third task in said group declaring need to access the shared resource and later declaring no need to access the shared resource to indicate a change in expectation on the access to the shared resource by the third task.