2012-12-21 43 views

回答

3

除非使用自定义调度程序或传递TaskCreationOptions.LongRunning选项,否则TPL在执行任务时不产生任何线程。即便如此,它仍然由TaskScheduler决定如何处理长时间运行的任务。

TPL将单个任务调度到线程池以供池的线程执行。每个线程都有自己的队列以减少多核机器中的冲突。如果线程太忙,框架使用一些偷工减料的魔术来将任务分配给同一个线程池中的空闲线程。

检查How does the tpl use the CLR thread pool了解更多的信息,这篇文章由Daniel Moth有关工作窃取的详细信息。