gpt4 book ai didi

C#:并行处理列表的基本方法?

转载 作者:太空宇宙 更新时间:2023-11-03 18:11:58 24 4
gpt4 key购买 nike

我想做一些我认为相当基础的事情,但我还没有找到一个相当基础的例子。这是我想要做的:

给定一个对象列表,我想遍历列表中的每个元素并对其调用一个相当耗费资源的方法。我想将其拆分为正在运行的应用程序可用的尽可能多的内核,这样如果它在 8 核设备上运行,它一次最多可以处理 8 个元素。所有的计算都是完全相互独立的,我希望当一个元素被处理完后,列表中的下一个元素就会开始。

我不确定在任何给定时间列表中会有多少项,也不知道有多少核心可用。有时可能是一个核心。

谢谢。

最佳答案

Parallel.ForEach(items, currentItem =>
{
// TODO: process a current item
Debug.WriteLine("[{0}] {1} {2}",
Thread.Current.ManagedThreadId ,
DateTime.Now,
currentItem);
};

items变量应该是实现 IEnumerable 的类型的实例或 IEnumerable<T> .

您也可以指定 ParallelOptions和 MaxDegreeOfParalellism 来控制线程池可以使用的线程数,同时在线程之间分配工作。

var options = new ParallelOptions
{
MaxDegreeOfParallelism = 2
};

Parallel.ForEach(items, options, currentItem =>
{
// TODO
});

另请参阅 MSDN:How to: Write a Simple Parallel.ForEach Loop

关于C#:并行处理列表的基本方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13057219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com