草庐IT

bufferBlock

全部标签

c# - DataflowBlockOptions.BoundedCapacity 和 BufferBlock<T> 之间的区别

假设我有一个简单的ActionBlockvaractionBlock=newActionBlock(_=>Console.WriteLine(_));我可以指定一个有限的容量来启用缓冲:varactionBlock=newActionBlock(_=>Console.WriteLine(_),newExecutionDataflowBlockOptions{BoundedCapacity=1000});创建BufferBlock是否更好?并将其链接到actionBlock,是否相同,或者是否多余? 最佳答案 如果您只是在Action

c# - TransformBlock 永远不会完成

我正试图围绕TPL数据流block中的“完成”进行思考。特别是,TransformBlock似乎从未完成。为什么?示例程序我的代码计算从1到1000的所有整数的平方。为此我使用了一个BufferBlock和一个TransformBlock。在我的代码后面,我等待TransformBlock完成。但是,该block从未真正完成,我不明白为什么。staticvoidMain(string[]args){varbufferBlock=newBufferBlock();varcalculatorBlock=newTransformBlock(i=>{Console.WriteLine("Cal

c# - 在数据流网络中使用 BufferBlock<T> 的好处

我想知道使用链接到一个或多个ActionBlock的BufferBlock是否有好处,除了节流(使用BoundedCapacity),而不是直接发布到ActionBlock(只要不需要节流)。 最佳答案 如果您只想将项目从一个block转发到其他几个block,则不需要BufferBlock。但在某些情况下它确实很有用。例如,如果您有一个复杂的数据流网络,您可能希望从较小的子网络构建它,每个子网络都以自己的方法创建。为此,您需要某种方式来表示一组block。在您提到的情况下,从该方法返回单个BufferBlock(可能作为ITarg

c# - 明显的 BufferBlock.Post/Receive/ReceiveAsync race/bug

交叉发布到http://social.msdn.microsoft.com/Forums/en-US/tpldataflow/thread/89b3f71d-3777-4fad-9c11-50d8dc81a4a9我知道...我并没有真正发挥TplDataflow的最大潜力。ATM我只是使用BufferBlock作为消息传递的安全队列,其中生产者和消费者以不同的速率运行。我看到一些奇怪的行为,让我不知所措继续。privateBufferBlockmessageQueue=newBufferBlock();publicvoidSend(objectmessage){varaccepted=