List<ManualResetEvent> doneEventsList = new List<ManualResetEvent>();
productBuilders.ForEach(productBuilder =>
{
doneEventsList.Add(productBuilder.GetDoneEvent());
CustomThreadPool.getSingletonInstance.QueueUserWorkItem(productBuilder.GetAndMapProduct, new Object());
});
WaitHandle.WaitAll(doneEventsList.ToArray());
上記のコードには少し疑問がありますが、
'クラスCustomThreadPool
の21のインスタンスのリストがあり、' 'には3つのビルダーがあるとします。この場合、取得したスレッド数はCustomThreadPoolから「3」になります。たとえば、その3つの呼び出しのいずれかでオブジェクトに'Set()/ true'を設定していない場合、、、これらの3つのスレッドはどうなりますか。つまり、上記のコードを7回ループし、毎回3つのスレッドを取得し、設定しない場合、CustomThreadPoolクラスを使用することはできませんか?割り当てるフリースレッドはありますか?;Thread
productBuilders
ManualResetEvent
GetAndMapProduct
ManualResetEvent