如何遍历列表中具有特定数量的线程的10,000个项目。
我已经通过多种方式做到这一点,例如线程,任务,并行循环和线程池,在每种情况下我都无法弄清楚!
我的脑海里有这样的东西:
number_of_current_threads = 0;
max_threads = 100;
while (number_of_current_threads < max_threads) {
Thread t = new Thread(new ThreadStart(Work));
t.Start();
number_of_current_threads++;
}
void Work () {
list_of_items.RemoveAt(0);
number_of_current_threads--;
}
但是正如您所看到的,如果number_of_current_threads
等于max_threads
,则主线程将通过while
循环,其余列表项保持未处理状态。
如何保证100
线程正常工作并重新开始工作,直到列表项的计数变为0?
还有如何知道所有任务都已完成?