在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#中使用并行编译和任务调度。你可以根据自己的需求调整代码,以实现更复杂的任务调度和资源管理。