Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1235 of 1492 menu
◀ ▶

Метод ForEach

Метод ForEach статический. Порядок вызовов не фиксирован - в примерах печатают только сумму. Общий результат защищают lock. Асинхронный вариант - ForEachAsync. Индексы - For.

Синтаксис

Parallel.ForEach(source, body);

Пример

Давайте сложить { 1, 2, 3, 4, 5 }:

using System; using System.Threading; using System.Threading.Tasks; class Program { static void Main() { int[] data = { 1, 2, 3, 4, 5 }; int sum = 0; object gate = new object(); Parallel.ForEach(data, x => { lock (gate) { sum += x; } }); int res = sum; Console.WriteLine(res); } }

Результат выполнения кода:

15

Пример

Давайте использовать Interlocked.Add:

using System; using System.Threading; using System.Threading.Tasks; class Program { static void Main() { int[] data = { 1, 2, 3, 4, 5 }; int sum = 0; Parallel.ForEach(data, x => { Interlocked.Add(ref sum, x); }); int res = sum; Console.WriteLine(res); } }

Результат выполнения кода:

15

Пример

Давайте обойти пустой массив:

using System; using System.Threading.Tasks; class Program { static void Main() { int[] data = { }; int sum = 0; Parallel.ForEach(data, x => { sum += x; }); int res = sum; Console.WriteLine(res); } }

Результат выполнения кода:

0

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить