数据流
TPL数据流通常用作简单管道,数据从其一端进入,通行于其中,并从另一端流出。不过,TPL数据流的强大之处绝不止于此,他还可以处理任何类型的网格。可以在网格中定义分支、连接和循环,TPL数据流会妥当地处理他们。然而在大多数情况下,TPL数据流网格仍是作为管道来应用。
数据流网格的基本构成单元是数据流块。数据流块既可以是目标快(接收数据—),也可以是源块(产生数据),或者两者兼而有之。源块可以通过链接到目标快来创建网格。数据流块是半独立的,当有数据到来时,他会视图处理数据并将结果向下游推出。TPL数据流的通常用法是创建所有的块,将他们链接到一起,然后开始把数据放到一端,之后数据会自行地从另一端流出。数据流的强大之处不止于此,当数据在其中流动时,它甚至可以将链接打断创建新的块,并将他们添加到网格中,但这种做法属于高级场景。
最为常用的TPL数据流块类型有TransformBlock<TInput,TOutput>(类似于LINQ的Select)、TransformManyBlock<TInput,TOutput>(类似于LINQ的SelectMany),以及针对没个数据项执行委托的ActionBlock<TResult>.