在C#中实现多线程并行计算可以通过使用 Task
和 Parallel
类来实现。这里给出两个简单的示例,一个是使用 Task
,另一个是使用 Parallel.ForEach
。
使用 Task 进行多线程并行计算
using System;
using System.Threading.Tasks;class Program
{static void Main(){// Example: Calculating squares of numbers in parallelint[] numbers = { 1, 2, 3, 4, 5 };Task[] tasks = new Task[numbers.Length];for (int i = 0; i < numbers.Length; i++){int index = i; // To avoid the modified closure issuetasks[i] = Task.Run(() =>{int result = numbers[index] * numbers[index];Console.WriteLine($"Square of {numbers[index]} is {result}");});}Task.WaitAll(tasks); // Wait for all tasks to completeConsole.WriteLine("All tasks completed.");}
}
- 在上面的例子中,使用
Task.Run()
来启动每个任务,计算数字的平方并输出结果。Task.WaitAll(tasks)
确保所有任务执行完毕后程序继续执行。
使用 Parallel.ForEach 进行多线程并行计算
using System;
using System.Threading.Tasks;class Program
{static void Main(){// Example: Calculating squares of numbers in parallel using Parallel.ForEachint[] numbers = { 1, 2, 3, 4, 5 };Parallel.ForEach(numbers, number =>{int result = number * number;Console.WriteLine($"Square of {number} is {result}");});Console.WriteLine("All tasks completed.");}
}
- 在这个例子中,使用
Parallel.ForEach
来并行遍历数组numbers
,对每个元素进行平方计算并输出结果。这种方式简化了多线程编程,由 .NET 库自动管理任务的分配和执行。
注意事项
- 在进行并行计算时,要注意数据的共享和同步问题,确保线程安全性。
- 使用
Task
和Parallel
类可以简化多线程编程,同时利用现代多核处理器的能力提升应用程序的性能。
这些示例展示了在C#中如何利用多线程进行并行计算,可以根据具体需求和任务复杂性进行进一步的扩展和优化。