Thread usage is managed when locking resources during the
possibly-contentious accessing of such resources. In a described
implementation, a thread that is executing a corresponding access request
is not suspended when its corresponding access request is delayed because
a targeted resource is currently locked for accessing by another thread.
Instead, when a targeted resource is locked, the blocked access request
is queued up in a queue of access requests. The corresponding thread is
then permitted to perform other work. When the resource is subsequently
unlocked and thus becomes available, an access request (e.g., the oldest
or highest priority access request) that is queued is retrieved, and a
thread is allowed to execute it. Implementations for general locking
access schemes, for read/write-bifurcated locking access schemes, etc.
are described. Implementations are described from conceptual, functional,
temporal, code or function, contention, thread, and other perspectives.