在现代软件开发中,充分利用多核 CPU 提升程序性能变得越来越重要。C# 提供了强大的并行编程工具,其中 Parallel.For 是最常用、最易上手的并行循环方法之一。本文将带你从零开始理解并掌握 Parallel.For 的使用方式,并通过实际示例展示如何显著提升程序执行效率。
Parallel.For 是 .NET Framework 4.0 引入的并行编程 API,属于 System.Threading.Tasks.Parallel 类。它允许你将一个传统的 for 循环自动分配到多个线程中并行执行,从而利用多核处理器的能力加速计算密集型任务。
假设我们要对一个大数组中的每个元素进行平方运算:
// 传统 for 循环int[] numbers = new int[10_000_000];for (int i = 0; i < numbers.Length; i++){ numbers[i] = i * i;} 使用 Parallel.For 改写后:
// 并行 for 循环int[] numbers = new int[10_000_000];Parallel.For(0, numbers.Length, i =>{ numbers[i] = i * i;}); 看起来改动很小,但性能可能提升数倍!特别是在处理大量数据或复杂计算时。
虽然 Parallel.For 使用简单,但有几点必须注意:
下面是一个使用 Parallel.For 加速素数判断的例子:
using System;using System.Diagnostics;using System.Threading.Tasks;class Program{ static bool IsPrime(int number) { if (number < 2) return false; for (int i = 2; i * i <= number; i++) { if (number % i == 0) return false; } return true; } static void Main() { const int max = 1_000_000; int primeCount = 0; // 使用锁保护共享变量 object lockObj = new object(); Stopwatch sw = Stopwatch.StartNew(); Parallel.For(2, max, i => { if (IsPrime(i)) { lock (lockObj) { primeCount++; } } }); sw.Stop(); Console.WriteLine($"找到 {primeCount} 个素数,耗时 {sw.ElapsedMilliseconds} 毫秒"); }} 在这个例子中,我们使用 lock 语句确保对 primeCount 的修改是线程安全的。虽然加锁会带来一点开销,但整体性能仍远优于串行版本。
在一台 8 核 CPU 的电脑上,对 100 万次素数判断:
性能提升接近 4 倍!这正是 C# Parallel.For 和 多线程性能提升 的魅力所在。
Parallel.For 是 C# 中实现 并行循环优化 的利器,特别适合处理大规模独立计算任务。只要注意线程安全和适用场景,就能轻松实现 C#高性能编程。建议你在自己的项目中尝试使用,体验多核 CPU 带来的速度飞跃!
提示:记得添加 using System.Threading.Tasks; 命名空间才能使用 Parallel 类哦!
本文由主机测评网于2025-12-16发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025128713.html