我只是做了一个简单的实验,使用下面的代码显示进程中的线程总数。
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 个线程。
问题:
- 为什么 Parallel.Foreach 中使用的 5 个线程在循环后继续运行?这是否意味着如果我有其他 Parallel.Foreach 在此之后会有更多的线程继续增加?
- 为什么 Parallel.Foreach 之前不使用 12 个线程?是不是因为这12个线程正在被其他人使用?