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