多线程C#拆分循环

Chr*_*son 4 c# parallel-processing multithreading

我有一个任务,该任务本质上循环遍历一个集合,并成对地对它们进行操作(对于int i = 0; i <limit; i + = 2等),因此,我在线程循环上看到的大多数建议都使用某种foreach机制。但这对我来说似乎有点棘手,因为我是如何使用这种成对操作的方法的。

所以我想做的基本上是替换:

DoOperation(list.Take(numberToProcess));
Run Code Online (Sandbox Code Playgroud)

Thread lowerHalf = new Thread(() => => DoOperation(list.Take(numberToProcess/2)));

Thread lowerHalf = new Thread(() => => DoOperation(list.getRange(numberToProcess/2, numberToProcess));

lowerHalf.Start();
upperHalf.Start();
Run Code Online (Sandbox Code Playgroud)

这似乎可以完成工作,但是非常慢。每次迭代都比上一次慢,并且在我调试时,“线程”视图显示越来越多的“线程”列表。

但是我给人的印象是线程在完成时就终止了?是的,线程确实完成了。DoOperation()方法几乎只是一个for循环。

那我在这里不明白什么呢?

Pra*_*ari 5

尝试使用Parallel.For,它将节省大量工作。