Patent ID: 7856636

Claim:
A method of sharing processing resources in a multi-threading environment, comprising: executing a first thread that requires access to a shared resource; if the shared resource is unavailable to the first thread: allocating a memory address with a lock value for the shared resource, wherein the memory address is associated with the first thread and the lock value indicates a state of the shared resource; arming the first thread for a switching event on the allocated memory address; yielding by the first thread at least a portion of the processing resources for a second thread that does not require access to the shared resource; while the second thread uses the at least a portion of the processing resources, performing the steps of: checking the lock value at the memory address by the logical processor in response to an occurrence of the switching event, wherein the switching event comprises updating, by a logical processor releasing the shared resource, the lock value for the shared resource; if the lock value indicates the shared resource is available: returning, by the second thread, the at least a portion of the processing resources to the first thread; and acquiring by the logical processor the shared resource for the first thread.