8得票2回答
一个TPL Dataflow块下游如何获取由源产生的数据?

我正在使用TPL Dataflow处理图像。我接收到一个处理请求,从流中读取图像,应用多个转换,然后将结果图像写入另一个流: Request -> Stream -> Image -> Image ... -> Stream 为此,我使用块: BufferBlo...

16得票1回答
TPL Dataflow和响应式扩展(Rx)相比,有哪些使用案例?

我正在考虑用其中之一或两者的组合编写一些信号处理算法。 性能不是重点,更重要的是表达意图的清晰度。 我将实现以下“块”并组合它们: 滤波器(FIR和IIR) 相位检测器 积分器 混频器 函数发生器 PLL(使用以上模块构建) 我明白Rx可以被认为是“Linq-to-streams”...

12得票2回答
这适合使用TPL Dataflow吗?

我在不同的任务上运行了一个相当典型的生产者/消费者模型。 任务1:从二进制文件中读取byte[]批次,并为每个byte数组集合启动一个新任务(该操作进行批处理以进行内存管理)。 任务2-n:这些是工作任务,每个任务都在传入的byte数组集合(来自任务1)上操作,对byte数组进行反序列化,...

8得票2回答
如何限制通过整个Dataflow管道并发传递的项数?

我希望限制Dataflow管道中发布的项目数量。该数量取决于生产环境。这些对象(图像)消耗大量内存,因此我希望在管道的最后一个块完成其工作时再发布它们。 我尝试使用SemaphoreSlim来限制生产者并在管道的最后一个块中释放它。虽然它有效,但如果在过程中出现异常,程序将永久等待且无法拦截...

21得票1回答
TPL Dataflow(TDF)和Reactive Extensions有什么区别?

经过数天的谷歌搜索,我认为我不能决定哪一个框架适用于哪种场景。当然我想使用一个完美的框架将两者结合起来(这是不现实的)。我甚至知道它们可以一起使用,但真正的问题是每个框架中的哪些核心设计元素使得它们不可能互相模拟。 以下是我找到的: 在RX中,有虚拟时间,因此调度程序有效地控制整个网络,...

9得票1回答
如何在TPL Dataflow中进行异步操作以获得最佳性能?

我编写了下面的方法来批量处理一个巨大的CSV文件。思路是将文件中的一块行读入内存,然后将这些行分成固定大小的批次。一旦我们得到分区,就将这些分区发送到服务器(同步或异步),这可能需要一段时间。 private static void BatchProcess(string filePath,...

9得票1回答
TPL Dataflow如何移除块之间的链接。

我想知道如何去除块之间的链接?换句话说,我想获得与LinkTo相反的效果。 我想基于tlp数据流编写一个记录器。 我编写了这个接口,并希望在需要时删除ILogListener的订阅。 public interface ILogManager { void RemoveListen...

10得票2回答
强制任务在当前线程继续执行?

我正在为.NET移植AKKA框架(现在还不要太认真,目前只是对其中Actor部分的周末黑客马拉松) 我遇到了一些关于"Future"支持的问题。 在Java/Scala Akka中,Future需要使用Await同步等待调用。 很像.NET Task.Wait()。 我的目标是支持真正的异...

12得票2回答
任务、TPL数据流和异步/等待,什么时候使用哪个?

我阅读过很多技术文档,包括一些由Microsoft团队或其他作者编写的有关新TPL Dataflow库、async/await并发框架和TPL功能的详细说明。然而,我并没有真正找到清晰地区分它们各自应该在何时使用的内容。我知道每个工具都有其适用性和应用场景,但具体来说: 我有一个完全在进程内...

68得票3回答
限制异步任务的执行速率

我想同时运行一些异步任务,并限制在任何给定时间内等待完成的任务数量。比如你有1000个URL,每次只想打开50个请求;但是只要一个请求完成,就会打开到列表中下一个URL的连接。这样,始终只有50个连接处于打开状态,直到URL列表耗尽。 如果可能的话,我也想利用给定数量的线程。 我已经编写了...