首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何最优雅地迭代C#中的并行集合?

在C#中,迭代并行集合时,可以使用Parallel.ForEach或者PLINQ(Parallel LINQ)来实现。这两种方法都可以高效地利用多核处理器,提高代码执行效率。

Parallel.ForEach是一种并行化的循环结构,它可以将一个集合的元素分块处理,并在多个线程上并行执行。使用Parallel.ForEach时,需要确保集合是线程安全的,因为多个线程可能会同时访问集合中的元素。

以下是一个使用Parallel.ForEach的示例:

代码语言:csharp
复制
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的示例:

代码语言:csharp
复制
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来实现高效的并行处理。这两种方法都可以充分利用多核处理器的优势,提高代码执行效率。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券