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

Hes 2015 M08 20
552
1
2
0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оцените пост

-8

Комментарии

-10
Ох, зачем то модель акторов сюда прилепил :) Хотел в новом посте о этой модели рассказать.
Но, в общем модель акторов и Tpl DataFlow в чём-то схожи, и некоторые идеи взяты оттуда.
Показать комментарии