C#多线程并行计算实例

在C#中实现多线程并行计算可以通过使用 Task 和 Parallel 类来实现。这里给出两个简单的示例,一个是使用 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 库自动管理任务的分配和执行。

注意事项

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

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

相关推荐

  1. C#线并行计算实例

    2024-07-09 17:44:06       17 阅读
  2. C++线并发

    2024-07-09 17:44:06       17 阅读
  3. 线实例

    2024-07-09 17:44:06       20 阅读
  4. c语言线队列实现

    2024-07-09 17:44:06       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 17:44:06       50 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 17:44:06       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 17:44:06       43 阅读
  4. Python语言-面向对象

    2024-07-09 17:44:06       54 阅读

热门阅读

  1. C#架构师的成长之路

    2024-07-09 17:44:06       25 阅读
  2. 算法刷题1-10大排序算法汇总

    2024-07-09 17:44:06       26 阅读
  3. 设计模式——工厂模式

    2024-07-09 17:44:06       44 阅读
  4. c语言中printf函数参数个数可变实现原理

    2024-07-09 17:44:06       22 阅读
  5. FFmpeg——视频拼接总结

    2024-07-09 17:44:06       24 阅读
  6. php框架详解-symfony框架

    2024-07-09 17:44:06       22 阅读
  7. 红黑树,B+树,B树的结构原理及对比

    2024-07-09 17:44:06       23 阅读