Dataflow programming¶
Category: Communication · Status: stub · Lessons: chapter 05, Message passing (planned)
One line: A program as a graph of blocks through which data flows, each block running when its inputs are ready — so the graph, not the programmer, decides what runs in parallel.
Also called: flow graph, TPL Dataflow.
How it connects¶
- See also: Pipeline, Reactive programming
In each language¶
| C# | TPL Dataflow ↗: linked blocks that buffer, transform and join messages |
| Haskell | the monad-par ↗ package's Par monad builds a dataflow graph of parallel computations |
Where to read more¶
- In the books: Pro TBB, Michael Voss, Rafael Asenjo, James Reinders — ch. 3, 'Flow Graphs'
- In the books: Parallel and Concurrent Programming in Haskell, Simon Marlow — ch. 4, 'Dataflow Parallelism: The Par Monad'
- In the books: Parallel Programming and Concurrency with C# 10 and .NET 6, Alvin Ashcraft — ch. 7, 'Task Parallel Library (TPL) and Dataflow'
- In the books: Concurrency in .NET, Riccardo Terrell — ch. 12, 'Parallel workflow and agent programming with TPL Dataflow'
- In the books: Pro Asynchronous Programming with .NET, Richard Blewett, Andrew Clymer — ch. 10, 'TPL Dataflow'
- In the books: Concurrency in C# Cookbook, Stephen Cleary — ch. 1, 'Concurrency: An Overview' → 'Introduction to Dataflows'
- Reference: Wikipedia: Dataflow programming ↗