1. A method comprising: calculating a thread criticality of a thread of a plurality of threads executing on a processing system by counting critical sections executing by the thread, other threads of the plurality of threads waiting for execution of the critical sections executing by the thread, and other critical sections waiting for execution by the other threads; and scheduling a memory request requested by the thread, the scheduling being based on the thread criticality.