以下のコードを使用して、プロセス内のスレッドの総数を示す簡単な実験を行いました。
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スレッドが現在他の人によって使用されているからですか?