【发布时间】:2016-07-13 20:39:41
【问题描述】:
我想处理一个包含 5000 个项目的列表。对于每个项目,该过程可能非常快(1 秒)或需要很长时间(> 1 分钟)。但我想以最快的方式处理此列表。
我不能将这 5000 个项目放在 .NET 线程池中,而且我需要知道这些项目何时全部处理完毕,所以我想有一个特定数量的线程并做:
foreach(var item in items)
{
// wait for a Thread to be available
// give the item to process to the Thread
}
但是在 c# 中最简单的方法是什么?我应该使用线程,还是可以使用一些更高级别的类?
【问题讨论】:
-
使用 Parallel ForEach 怎么样?看看:msdn.microsoft.com/en-us/library/dd460720(v=vs.110).aspx
-
@jcvegan OP 说线程池由于某种原因不适用于他们的情况 - 所以包括 Parllel.ForEach 在内的大多数标准方法似乎都已经过时了...... jcmag,请澄清。
-
@AlexeiLevenkov:他说他不能将 5000 个项目放入线程池中。我认为他的意思是他不能启动 5000 个线程,每个项目一个。
-
@AlexeiLevenkov 无法同时启动 5000 个线程。我需要知道所有项目的处理时间。
标签: c# multithreading