通过多线程C#遍历列表

时间:2019-05-31 15:13:40

标签: c# multithreading parallel-processing threadpool multitasking

如何遍历列表中具有特定数量的线程的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?

还有如何知道所有任务都已完成?

0 个答案:

没有答案