0
我们现在通过实现Task.Factory.StartNew()来使用任务并行库。有什么办法可以检查执行任务时应用程序产生了多少线程?任务并行库:应用程序产生了多少线程?
目前我们正在开发环境中运行双核处理器的应用程序。
我们现在通过实现Task.Factory.StartNew()来使用任务并行库。有什么办法可以检查执行任务时应用程序产生了多少线程?任务并行库:应用程序产生了多少线程?
目前我们正在开发环境中运行双核处理器的应用程序。
除非使用自定义调度程序或传递TaskCreationOptions.LongRunning选项,否则TPL在执行任务时不产生任何线程。即便如此,它仍然由TaskScheduler决定如何处理长时间运行的任务。
TPL将单个任务调度到线程池以供池的线程执行。每个线程都有自己的队列以减少多核机器中的冲突。如果线程太忙,框架使用一些偷工减料的魔术来将任务分配给同一个线程池中的空闲线程。
检查How does the tpl use the CLR thread pool了解更多的信息,这篇文章由Daniel Moth有关工作窃取的详细信息。