1. A method for providing a scalable thread pool to perform an ordered plurality of task elements received from a calling thread in a multi-threaded processing environment, the method comprising: providing one or more association piles configured to hold task elements; providing two or more work slots, each work slot being directed to exactly one association pile, such that each task element of the ordered plurality of task elements provided to said work slot by said calling thread, is provided by said calling thread via said work slot to said exactly one association pile to which the work slot is directed; associating a first key with a first task element of the ordered plurality of task elements; associating said first key with a second task element of the ordered plurality of task elements; providing one or more worker threads associated with each of said one or more association piles, each worker thread configured to poll task elements from an associated association pile, perform said task elements, and release said task elements when completed; configuring each association pile such that pending task elements polled from the association pile by a worker thread are held in said association pile until released by said worker thread upon completion of the task; polling, by a first worker thread of the one or more worker threads, the first task element; configuring each association pile to prevent, based on said first key, polling of said second task element by a second worker thread of the one or more worker threads before said first task element is released by the first worker thread; and polling, by the second worker thread, a third task element associated with a second key before the first worker thread releases the first task element, wherein the third task was received in the same association pile as the second task and after the second task.