The described implementations relate to efficient scheduling of
transactions and tasks. A memory location, address, or variable
previously accessed by a blocked entity is observed periodically to
determine an appropriate time to wake and retry the blocked entity. If
the previous accessed memory location, address or variable changes state,
a scheduler wakes the blocked entity and the blocked entity retries
processing. A doubly-indexed data structure of blocked entities and
memory locations associated with the blocked entities may be used to
efficiently determine when a retrying execution would be profitable.