Parallel.ForEach<T> 的某些项目在 ThreadPool 上运行,有些则不在

Lui*_*ues 3 c# multithreading threadpool task-parallel-library parallel.foreach

我有一个像这样的简单算法:

Parallel.ForEach(myList, new ParallelOptions() { MaxDegreeOfParallelism = 4 } ,(job) => job.doSomething());  
Run Code Online (Sandbox Code Playgroud)

myList是一个List<MyType>.

MyTypevoid DoSomething()

DoSomething我检查里面Thread.CurrentThread.IsThreadPoolThread。有些线程不是“ThreadPooled”;

Sco*_*ain 5

中定义的函数Parallel还将使用您调用该函数的线程作为工作线程之一。最有可能的是非线程池线程,其中的作业在您调用的线程上完成Parallel.ForEach