在迭代期间使用线程

时间:2010-08-14 15:04:43

标签: c# .net multithreading

有一个集合,该集合的每个元素都被发送到一个函数,其中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
}

2 个答案:

答案 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。