The unlock operation is modified to check the contention bit of the currently executing thread. This check is only done when a lock is actually released (as locks are recursive), after releasing the lock.
When the lock of object is released by thread
, and if the contention
bit of thread
is set, then
(1) thread
acquires its own contention lock,
and (2) iterates over all the elements of its tuple linked list.
For each tuple (
,
), if (
), thread
is simply
signaled. If (
), the lock of object
is
inflated13(if it is thin), then thread
is signaled. Finally,
(3) thread
empties its tuple linked list, clears
its contention bit, and releases its contention lock.