C#多线程并行计算实例

在C#中实现多线程并行计算可以通过使用 TaskParallel 类来实现。这里给出两个简单的示例,一个是使用 Task,另一个是使用 Parallel.ForEach

使用 Task 进行多线程并行计算

复制代码
using System;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        // Example: Calculating squares of numbers in parallel
        int[] 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 issue
            tasks[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 complete
        Console.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.ForEach
        int[] 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 库自动管理任务的分配和执行。

注意事项

  • 在进行并行计算时,要注意数据的共享和同步问题,确保线程安全性。
  • 使用 TaskParallel 类可以简化多线程编程,同时利用现代多核处理器的能力提升应用程序的性能。

这些示例展示了在C#中如何利用多线程进行并行计算,可以根据具体需求和任务复杂性进行进一步的扩展和优化。

相关推荐
Mr -老鬼32 分钟前
Java VS Rust
java·开发语言·rust
北凉军39 分钟前
java连接达梦数据库,用户名是其他库的名称无法指定库,所有mapper查询的都是以用户名相同的库内的表
java·开发语言·数据库
wuk9981 小时前
基于C#与三菱PLC通过TCPIP实现MC协议通信示例
java·网络·c#
沛沛老爹1 小时前
Web转AI架构篇 Agent Skills vs MCP:工具箱与标准接口的本质区别
java·开发语言·前端·人工智能·架构·企业开发
avi91111 小时前
Unity 天命6源码- 商业游戏说明分析
开发语言·unity·c#·游戏开发·游戏源码
低频电磁之道2 小时前
编译C++的几种方式(MSVC编译器)
开发语言·c++
Zsy_0510032 小时前
【C++】类和对象(一)
开发语言·c++
星火开发设计2 小时前
Java面向对象三大特性:封装、继承与多态的深度解析及实战
java·开发语言·microsoft·多态·继承·面向对象·封装
旅途中的宽~3 小时前
【Python】pip install -v e .命令不想自动更新torch版本
开发语言·python·pip
lly2024063 小时前
Vue3 指令详解
开发语言