初始化100个元素的int数组,实现并行处理(Parallel),将这100条数据插入到另一个list对象中
时间: 2024-10-10 19:14:12 浏览: 34
在.NET Framework中,我们可以利用`System.Threading.Tasks.Parallel`类来实现并行处理一个大数组并将元素添加到列表中。以下是一个示例:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
class Program
{
static void Main()
{
// 创建初始数组
int[] arrayToProcess = Enumerable.Range(0, 100).ToArray();
// 创建一个任务列表来存储并行操作的结果
List<int> result = new List<int>();
// 并行填充结果列表
Parallel.For(0, arrayToProcess.Length, i =>
{
int element = arrayToProcess[i];
// 模拟耗时操作,这里只是为了演示
Task.Delay(100).Wait();
result.Add(element);
});
// 等待所有任务完成后再显示结果
Console.WriteLine($"Completed adding {result.Count} elements to the list in parallel.");
}
}
```
在这个示例中,我们使用`Parallel.For`方法迭代数组,对于数组中的每个元素,我们先等待一个短暂的时间(模拟实际的计算),然后将其添加到`result`列表中。这样,数组的元素就被分发到多个线程上并行处理了。
注意,由于`Task.Delay`是在主线程中执行的,因此列表的添加不会完全并行。如果需要避免阻塞主线程,可以在`Add`方法前加一个`lock`关键字来同步对列表的操作。
阅读全文