A task synchronization mechanism operates on a global lock that is shared between
processors an on local locks that are not shared between processors. The local
locks are processor-specific locks. Each processor-specific lock is dedicated to
a particular processor in the system. When shared access to a resource is required,
a processor updates its processor-specific lock to indicate the processor is sharing
the resource. Because each processor-specific lock is dedicated to a particular
processor, this eliminates a significant portion of the memory bus traffic associated
with all processors reading and updating the same lock. When exclusive access to
a resource is required, the requesting processor waits until the count of all processor-specific
locks indicate that none of these processors have a lock on the resource. Once
no processor has a lock on the resource, exclusive access to the resource may be granted.