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

Parallel

Parallel статический. Счётчик - For, коллекцию - ForEach и ForEachAsync. Несколько действий - Invoke. Запрос по ядрам - PLINQ.

Синтаксис

Parallel.For(fromInclusive, toExclusive, body); Parallel.ForEach(source, body);

Пример

Давайте сложить индексы For(0, 5, ...):

using System; using System.Threading; using System.Threading.Tasks; class Program { static void Main() { int sum = 0; object gate = new object(); Parallel.For(0, 5, i => { lock (gate) { sum += i; } }); int res = sum; Console.WriteLine(res); } }

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

10

Пример

Давайте сложить элементы массива через ForEach:

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

Пример

Давайте дождаться двух делегатов через Invoke:

using System; using System.Threading.Tasks; class Program { static void Main() { int a = 0; int b = 0; Parallel.Invoke( () => { a = 1; }, () => { b = 2; }); bool res = a == 1 && b == 2; Console.WriteLine(res); } }

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

True

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

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