1. A memory scheduler for scheduling thread requests in a general-purpose computer system, comprising; a memory request buffer for receiving a plurality of thread requests from a plurality of concurrent threads on an ongoing basis; a batch identifier for marking a subset of requests in the memory request buffer for forming a current batch of requests, said marking being based in part on arrival times of the requests in each corresponding thread; a memory scheduler for prioritizing the requests in the current batch of requests over other requests in the memory request buffer; and wherein the memory scheduler schedules the requests in the current batch of requests for servicing from shared memory of the general-purpose computer based on the priority of each request.