有一个集合,该集合的每个元素都被发送到一个函数,其中5个线程必须对其进行处理。
如何让5个线程处理传递的项目?
foreach(var item in collection)
{
doSomeWork(item);
}
void doSomeWork(object item)
{
//here i have to do something with the passed 'item' by using 5 threads
}
答案 0 :(得分:1)
foreach (var item in collection)
{
for (var i = 0; i < 5; i++)
{
ThreadPool.QueueUserWorkItem(doSomeWork, item);
}
}
答案 1 :(得分:1)
在.NET 4中,您可以使用Parallel LINQ:
Parallel.ForEach(collection, item => {
// process each item
});
这将使用Parallel Extension(PFX)启发式方法从线程池中安排一个或多个worker。