为什么当我运行下面的示例时,Parallel.ForEach只使用与我的计算机核心数量相同的线程数? 我以为Parallel.ForEach会给你大约1000个线程池线程?
int threads1;
int threads2;
ThreadPool.GetAvailableThreads(out threads1,out threads2);
var list = Enumerable.Range(1, 200);
var po = new ParallelOptions
{
MaxDegreeOfParallelism = 100
};
Parallel.ForEach(list, po, x =>
{
Console.WriteLine("Thread:" + Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(1000);
});
我有什么地方理解不对吗?