温馨提示×

c#并行编译如何进行任务调度

c#
小樊
81
2024-12-12 22:01:04
栏目: 编程语言

在C#中,可以使用Task类和Parallel类来进行并行编译和任务调度。以下是一个简单的示例,展示了如何使用这些类来执行并行任务:

using System;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        // 创建一个任务列表
        var tasks = new Task[3];

        // 创建并启动任务1
        tasks[0] = Task.Run(() => DoWork("Task 1"));

        // 创建并启动任务2
        tasks[1] = Task.Run(() => DoWork("Task 2"));

        // 创建并启动任务3
        tasks[2] = Task.Run(() => DoWork("Task 3"));

        // 等待所有任务完成
        Task.WaitAll(tasks);

        Console.WriteLine("All tasks completed.");
    }

    static void DoWork(string taskName)
    {
        Console.WriteLine($"{taskName} started.");

        // 模拟耗时操作
        Thread.Sleep(1000);

        Console.WriteLine($"{taskName} completed.");
    }
}

在这个示例中,我们创建了3个任务,每个任务都会执行DoWork方法。Task.Run方法用于创建并启动任务,Task.WaitAll方法用于等待所有任务完成。

如果你需要在多个线程之间共享资源,可以使用Parallel类。以下是一个使用Parallel类的示例:

using System;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        // 创建一个共享资源
        int sharedResource = 0;

        // 并行执行任务,计算共享资源的和
        Parallel.For(0, 10, i =>
        {
            sharedResource += i;
        });

        Console.WriteLine($"Sum of the shared resource: {sharedResource}");
    }
}

在这个示例中,我们使用Parallel.For方法并行执行任务,计算共享资源的和。Parallel.For方法接受一个范围和一个委托,委托在每个范围内执行。在这个例子中,我们使用lambda表达式定义了一个简单的委托,用于将当前索引值累加到共享资源中。

这些示例展示了如何在C#中使用并行编译和任务调度。你可以根据自己的需求调整代码,以实现更复杂的任务调度和资源管理。

0