我对异步处理和TPL Dataflow相对较新。我的场景是:一个块不断地接收输入,异步地对输入执行函数并返回结果(然后将结果传递给保存到数据库的另一个块)。该函数可能在几毫秒内完成,也可能需要长达10秒才能返回结果。该块已设置为使用“无限制”并行处理方式。结果的顺序并不重要。
我最初使用了TransformBlock,但由于它保持了项目序列,单个缓慢的项目会导致许多更快的项目堆积在其后面。在这种特定情况下,即使结果以非顺序方式传播出去,也不仅可以接受,而且非常理想。这样可以使结果以平稳的速率流动,而不是像巨浪一样涌来。
我已经多次搜索,寻找一个实现Dataflow块的方法,以便在项目完成后立即传播它们,但我还没有找到与此描述匹配的任何内容。我放弃了,并通过“粘合”ActionBlock和BufferBlock创建了自己的NonSequentialBlock。它似乎能够胜任工作,但我担心(由于缺乏经验)我做错了什么,最终会遭受损失。是否有现有的这种模式的实现可用?
我最初使用了TransformBlock,但由于它保持了项目序列,单个缓慢的项目会导致许多更快的项目堆积在其后面。在这种特定情况下,即使结果以非顺序方式传播出去,也不仅可以接受,而且非常理想。这样可以使结果以平稳的速率流动,而不是像巨浪一样涌来。
我已经多次搜索,寻找一个实现Dataflow块的方法,以便在项目完成后立即传播它们,但我还没有找到与此描述匹配的任何内容。我放弃了,并通过“粘合”ActionBlock和BufferBlock创建了自己的NonSequentialBlock。它似乎能够胜任工作,但我担心(由于缺乏经验)我做错了什么,最终会遭受损失。是否有现有的这种模式的实现可用?