PLINQ
Цепочку начинают с
AsParallel над
последовательностью. Sum
от порядка не зависит. Если нужен
исходный порядок элементов,
добавляют AsOrdered.
Императивный аналог -
Parallel.ForEach.
Пространство имён -
System.Linq.
Синтаксис
using System.Linq;
int total = source.AsParallel().Sum();
Пример
Давайте сложить пять чисел
через AsParallel:
using System;
using System.Linq;
using System.Threading.Tasks;
class Program
{
static void Main()
{
int res = new[] { 1, 2, 3, 4, 5 }.AsParallel().Sum();
Console.WriteLine(res);
}
}
Результат выполнения кода:
15
Пример
Давайте сравнить сумму с
обычным Sum:
using System;
using System.Linq;
using System.Threading.Tasks;
class Program
{
static void Main()
{
int[] data = { 1, 2, 3, 4, 5 };
int plain = data.Sum();
int parallel = data.AsParallel().Sum();
bool res = plain == parallel;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте посчитать элементы
через AsParallel:
using System;
using System.Linq;
using System.Threading.Tasks;
class Program
{
static void Main()
{
int res = new[] { 1, 2, 3, 4, 5 }
.AsParallel()
.Count();
Console.WriteLine(res);
}
}
Результат выполнения кода:
5
Смотрите также
-
ForEach,
императивный обход -
For,
по индексам -
ForEachAsync,
с ожиданием -
Parallel,
классParallel