1. A method of operating a data storage system in which parent threads have been granted locks on respective address ranges in a storage device of the data storage system, and in which sleeping threads are in a waiting state until being granted locks on respective address ranges in the storage device, the method comprising: receiving, by a storage processor of the data storage system, a message indicating that a lock on a first address range in the storage device granted to a first thread has been released; in response to receiving the message, awakening a sleeping thread, the sleeping thread seeking a lock on a second address range in the storage device, the second address range and the first address range having at least one address in common; comparing, to produce a comparison result, the second address range with (i) address ranges that are currently locked and (ii) address ranges to which respective locks are sought by an older subset of the set of sleeping threads, each thread of the older subset having been received prior to the second thread; granting the sleeping thread the lock on the second address range in response to the comparison result indicating that the second address range has no addresses in common with either (i) or (ii); and placing the sleeping thread back into the waiting state in response to the comparison result indicating that the second address range has at least one address in common with (i) or (ii).