Patent ID: 8566827

Claim:
A method of data processing in a data processing system including a plurality of processing units and a shared resource, said method comprising: the data processing system monitoring a plurality of threads representing a plurality of tasks to be executed by at least one of the plurality of processing units; the data processing system implementing a transaction lock separate from the shared resource that synchronizes access by the plurality of threads to the shared resource, a list associated with the shared resource that orders at least one thread among the plurality of threads by priority of access to the shared resource, and a list lock that synchronizes access by the plurality of threads to the list; in response to a first thread among said plurality of threads unsuccessfully attempting to acquire the transaction lock synchronizing access to the shared resource because the transaction lock is held by a second thread among said plurality of threads, the first thread attempting to acquire the list lock that synchronizes access to the list associated with said shared resource; in response to said first thread failing to acquire the list lock because the list lock is held by a third thread among said plurality of threads, placing said first thread into a sleep state; thereafter, performing a first awakening said first thread from said sleep state and the first thread retrying said attempt to acquire said list lock; in response to the first thread acquiring the list lock, placing the first thread into the sleep state and enrolling the thread in the list in order of priority of access to the shared resource; and in response to one or more of the plurality of processing units entering an idle state, performing a second awakening the first thread from the list in accordance with the order of priority of access to the shared resource specified by the list and executing the first thread to acquire the transaction lock and to access the shared resource.