The main problem in employing a shared priority queue is the penalty for its high access time, which usually involves several locks and barriers for synchronization and mutual exclusion. Therefore, while it is acceptable to perform just one or two operations per queue access for coarse-grained applications, one must perform several operations per access for fine- and medium-grained applications in order to spread out the queue access overhead over several delete-mins and inserts (the grain-packing principle [3]). Accordingly, the following delete-think-insert scenario emerges: repeatedly, a processor deletes several top priority items, processes them all one by one, an.d then, inserts all the newly produced items.