his*_*a21 2 c# multithreading threadpool
我只是做了一个简单的实验,使用下面的代码显示进程中的线程总数.
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);
Run Code Online (Sandbox Code Playgroud)
我在parallel.foreach之前得到12个线程,并在parallel.foreach之后获得了17个线程.
问题:
这种行为在外部视图中是不确定的.
Parallel类使用Threadpool.关于何时创建新线程以及何时使用旧线程有一些决定.这也为您提供了性能并减少了所需的记忆量.
在并行foreach之后,某些线程可能(临时)仍然存在,这可以用于线程池活动.但据我所知,你无法预测,是否会继续存在多少线程.