1. A task scheduler for a scheduling a plurality of tasks of a program to be executed on one or more worker threads, the task scheduler comprising: a task group component that creates task groups by assigning each of the plurality of tasks to a task group; a task group queue component that organizes the task groups according to a predetermined criteria in a task group queue and creates a hierarchy of task group queues; a worker thread pool including a group of worker threads each associated with one of a plurality of processor cores; and a scheduler logic component that assigns the worker threads in the worker thread pool to execute the task group queues according to the hierarchy of task group queues.