【C#】并行编程实战:任务并行性(上)
发布人:shili8
发布时间:2024-02-14 07:19
阅读次数:45
在C#中,任务并行性是一种强大的编程技术,可以帮助我们更有效地利用多核处理器的性能。通过并行执行多个任务,我们可以提高程序的性能和响应速度。在本文中,我们将介绍如何在C#中使用任务并行性。
首先,我们需要引入System.Threading.Tasks命名空间,该命名空间包含了用于并行编程的类和方法。
csharpusing System; using System.Threading.Tasks;
接下来,我们可以使用Task类来创建并行任务。下面是一个简单的示例,创建一个任务来计算1到100的和:
csharpTask<int> task = Task.Run(() => { int sum =0; for (int i =1; i <=100; i++) { sum += i; } return sum; }); Console.WriteLine("Sum: " + task.Result);
在上面的代码中,我们使用Task.Run方法创建了一个任务,该任务会在后台线程中执行指定的操作。在这个例子中,我们计算了1到100的和,并通过task.Result获取了计算结果。
除了使用Task.Run方法,我们还可以使用Task.Factory.StartNew方法来创建任务。下面是一个示例,创建一个任务来输出“Hello, World!”:
csharpTask task = Task.Factory.StartNew(() => { Console.WriteLine("Hello, World!"); }); task.Wait();
在上面的代码中,我们使用Task.Factory.StartNew方法创建了一个任务,该任务会在后台线程中执行指定的操作。在这个例子中,我们输出了“Hello, World!”。
除了创建单个任务,我们还可以创建并行任务组。下面是一个示例,创建一个并行任务组来计算1到100的和和平均值:
csharpTask<int> sumTask = Task.Run(() => { int sum =0; for (int i =1; i <=100; i++) { sum += i; } return sum; }); Task<double> averageTask = Task.Run(() => { return sumTask.Result /100.0; }); Task.WhenAll(sumTask, averageTask).ContinueWith(tasks => { Console.WriteLine("Sum: " + sumTask.Result); Console.WriteLine("Average: " + averageTask.Result); });
在上面的代码中,我们创建了两个任务sumTask和averageTask,分别计算1到100的和和平均值。然后使用Task.WhenAll方法等待两个任务都完成后,输出计算结果。
通过任务并行性,我们可以更有效地利用多核处理器的性能,提高程序的性能和响应速度。在实际开发中,我们可以将耗时的操作放在后台线程中执行,避免阻塞主线程,从而提高用户体验。【本文未完,待续】