C# Parallel.ForEach期间使用的线程数
我只是用下面的代码做了一个简单的实验来显示进程中的线程总数C# Parallel.ForEach期间使用的线程数,c#,multithreading,threadpool,C#,Multithreading,Threadpool,我只是用下面的代码做了一个简单的实验来显示进程中的线程总数 Console.WriteLine("Total Number of Threads: {0}", Process.GetCurrentProcess().Threads.Count); Parallel.ForEach( names, new ParallelOptions {MaxDegreeOfParallelism = Environment.ProcessorCount },
Console.WriteLine("Total Number of Threads: {0}", Process.GetCurrentProcess().Threads.Count);
Parallel.ForEach(
names,
new ParallelOptions {MaxDegreeOfParallelism = Environment.ProcessorCount },
name =>
{
Console.WriteLine(name);
});
Console.Read();
Console.WriteLine("Total Number of Threads: {0}", Process.GetCurrentProcess().Threads.Count);
我在parallel.foreach之前有12个线程,在parallel.foreach之后有17个线程
问题:
从外部来看,这种行为是不确定的 并行类使用线程池。关于何时创建新线程以及何时使用旧线程,有一些决定。这还可以提高性能并减少所需的内存量 在并行foreach之后,一些线程可能(暂时)仍然存在,可以用于线程池活动。但据我所知,你无法预测,如果或多少线程将继续存在