gpt4 book ai didi

.net - 是否有像 TransformBlock 这样的数据流 block 允许不按顺序传播项目?

转载 作者:行者123 更新时间:2023-12-04 02:22:19 25 4
gpt4 key购买 nike

我对异步处理和 TPL 数据流试验还比较陌生。我的场景:我有一个持续提供输入的 block ,对输入异步执行一个函数,然后返回结果。 (然后将结果传递给保存到数据库的另一个 block 。)该函数可能会在几毫秒内完成,也可能需要长达 10 秒的时间才能返回。该 block 设置为使用“无限制”并行处理。结果的顺序并不重要。

我开始使用 TransformBlock 但是(因为它维护了项目序列)单个慢项目会导致许多更快的项目堆积在它后面。在这种特定情况下,结果乱序传播不仅是可以接受的,而且是非常可取的。这允许结果以固定的速率流动,而不是在巨大的波浪中流动。

我已经搜索了好几次,寻找一个数据流 block 的实现,该 block 在项目完成后立即传播,但我还没有找到任何与此描述相匹配的东西。我放弃了,通过将一个 ActionBlock 和一个 BufferBlock“管道连接”在一起,创建了我自己的 NonSequentialBlock。它似乎可以完成这项工作,但我担心(由于我缺乏经验)我做错了什么,最终会咬我一口。是否有此模式的现有实现可用?

最佳答案

不,你没有做错任何事。通常通过组合基本 block 创建您自己的 block ,然后调用 Encapsulate ......封装它们并呈现单个 IPropagator block 。

关于.net - 是否有像 TransformBlock<TIn, TOut> 这样的数据流 block 允许不按顺序传播项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27415396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com