【发布时间】:2014-06-08 15:24:23
【问题描述】:
我有一个任务,它本质上是遍历一个集合并成对地对它们进行操作(对于 int i = 0; i
所以我想做的基本上是替换:
DoOperation(list.Take(numberToProcess));
与
Thread lowerHalf = new Thread(() => => DoOperation(list.Take(numberToProcess/2)));
Thread lowerHalf = new Thread(() => => DoOperation(list.getRange(numberToProcess/2, numberToProcess));
lowerHalf.Start();
upperHalf.Start();
这似乎可以完成工作,但速度非常慢。每次迭代都比前一次慢,当我调试时,线程视图显示了一个不断增长的线程列表。
但我的印象是线程在完成后会自行终止?是的,线程确实完成了。 DoOperation() 方法几乎只是一个 for 循环。
那么我在这里不明白什么?
【问题讨论】:
-
你可以对下半部分执行 .Take(halfCount),然后对上半部分执行 .Skip(halfCount)。
标签: c# multithreading parallel-processing