在C#中,迭代并行集合时,可以使用Parallel.ForEach或者PLINQ(Parallel LINQ)来实现。这两种方法都可以高效地利用多核处理器,提高代码执行效率。
Parallel.ForEach是一种并行化的循环结构,它可以将一个集合的元素分块处理,并在多个线程上并行执行。使用Parallel.ForEach时,需要确保集合是线程安全的,因为多个线程可能会同时访问集合中的元素。
以下是一个使用Parallel.ForEach的示例:
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
Parallel.ForEach(numbers, (number) =>
{
Console.WriteLine($"Processing {number} on thread {Thread.CurrentThread.ManagedThreadId}");
});
在这个示例中,我们使用Parallel.ForEach来遍历一个整数列表,并在每个线程上输出当前处理的数字和线程ID。
PLINQ是一种基于LINQ的并行查询技术,它可以将LINQ查询转换为并行执行的形式。使用PLINQ时,需要确保查询的各个操作符都是线程安全的。
以下是一个使用PLINQ的示例:
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var parallelQuery = from number in numbers.AsParallel()
where number % 2 == 0
select number * 2;
foreach (var result in parallelQuery)
{
Console.WriteLine(result);
}
在这个示例中,我们使用PLINQ来遍历一个整数列表,并在并行线程上执行过滤和映射操作。最后,我们将结果输出到控制台上。
总之,在C#中迭代并行集合时,可以使用Parallel.ForEach或PLINQ来实现高效的并行处理。这两种方法都可以充分利用多核处理器的优势,提高代码执行效率。
停课不停学 腾讯教育在行动第一期
DBTalk
腾讯云GAME-TECH游戏开发者技术沙龙
云+社区技术沙龙[第3期]
云+社区沙龙online[数据工匠]
T-Day
GAME-TECH
领取专属 10元无门槛券
手把手带您无忧上云