If my understanding of the way the ThreadPool works is correct, one of its purposes is to limit the number of worker threads within a process that can be created at a given
Usually, ThreadPool creates a number of threads equal to number of CPU cores. There are no necessity in creating more threads as only one thread could be handled by core in a time. But, when task queued to a ThreadPool takes more than 0.5s to execute, the ThreadPool creates an additional thread to handle remaining tasks in a queue. So, if you queue a lot of heavy tasks to a ThreadPool, it will create a lot of additional threads to emulate multitasking and execute all tasks in "parallel". But total execution time would be the same as without additional threads, moreover, it would be even less because creation the thread is quite heavy operation. That's why ThreadPool is recommended for small tasks, to avoid creation additional threads which actually do not bring any advantage.
You can read more about ThreadPool in Albahari's article. Actually, he has a good set of articles there about threading.