1. A method for providing a scalable thread pool to perform an ordered plurality of tasks received from a calling thread in a multi-threaded processing environment, the method comprising: providing one or more association piles configured to hold tasks; providing two or more work slots, each work slot being directed to exactly one association pile, such that each task of the ordered plurality of tasks 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; providing one or more worker threads associated with each of said one or more association piles, each worker thread configured to poll tasks from an associated association pool, perform said tasks, and release said tasks when completed; configuring each association pile such that pending tasks 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; and configuring each association pile to prevent polling of pending tasks and all tasks related to said pending tasks such that each association pile maintains first-in-first-out ordering of related tasks.