using System.Threading.Tasks;
using System.Threading.Tasks.Dataflow;
public static void Main(string[] args)
var numberOfProducers = 1;
var numberOfConsumers = 10;
var allProducers = Enumerable.Range(0, numberOfProducers).Select(x => new BroadcastBlock<double>(d =>
new DataflowBlockOptions()
var allConsumers = Enumerable.Range(0, numberOfConsumers).Select(x => new ActionBlock<double>(d =>
Console.WriteLine(String.Format("Consuming {0} on Thread ID: {1}", d, Thread.CurrentThread.ManagedThreadId));
new ExecutionDataflowBlockOptions()
foreach (var producer in allProducers)
foreach (var consumer in allConsumers)
producer.LinkTo(consumer);
Parallel.For(0, 20, (i) =>
foreach (var producer in allProducers)
Console.WriteLine(String.Format("Posting {0} on Thread ID: {1}", i, Thread.CurrentThread.ManagedThreadId));