Yvision.kz
kk
Разное
Разное
399 773 постов41 подписчиков
Всяко-разно
-10
23:24, 20 августа 2015

Параллельное программирование. TPL DataFlow

Поговорим немного о TPL Dataflow.

Эта библиотека, позволяющая повысить производительность и устойчивость параллельных приложений.

Для .Net Framework 4.0 и 4.5 библиотека поставляется посредством NuGet.

Подход, используемый в TPL Dataflow, состоит в следующем:

Строится вычислительный конвейер, состоящий из множества вычислительных блоков, работающих параллельно и независимо друг от друга, и обменивающихся информацией посредством асинхронных сообщений.

В TPL Dataflow используется парадигма программирования потоков данных: Вики

В TPL DataFlow существуют 3 основных вида блоков:

  • Блоки источники - источники данных, из которых можно читать.
  • Блоки приёмкники - приёмники данных, в которых можно писать.
  • Блоки распространители - являются одновременно и источниками и приёмниками данных.

Блоки можно связывать, образуя вычислительные конвейеры. Один блок-источник можно связывать с множеством блоков-приёмников. Один блок-приёмник можно связывать с множеством блоков-источников. В методе связывания источника с целевым объектом LinkTo, можно указать делегат, который определяет, принимает или отклоняет целевой блок сообщение в зависимости от содержания этого сообщения. Механизм фильтрации позволяет гарантировать, что блок потока данных будет получать только определенные значения.

Существует 3 категории блоков: буферные, исполнительные, группирующие.

  • Блоки буферизации хранят данные для использования блоками потребителями данных.
  • Исполнительные блоки выполняют заданный делегат над каждым принятым сообщением.
  • Группирующие блоки объединяют данные от множества источников с разными ограничениями.

Практический пример.

Хороший пример можно найти тут, тут и тут.

-10
812
1