我现在有一个应用程序,这是一个管道设计。在第一阶段中,它将一些数据和文件读入Stream。有一些中间阶段可以处理数据流。然后有一个最后阶段将流写入某处。这一切都是连续发生的,一个阶段完成,然后转入下一个阶段。C#流设计问题
这一切都工作得很好,但现在数据量开始变得相当大(潜在的数百GB)。所以我想我需要做点什么来缓解这一点。我最初的想法就是我正在寻找一些反馈意见(作为一名独立开发人员,我没有任何地方可以反弹这个想法)。
我正在考虑创建一个并行管道。从管道开始的对象将创建所有的阶段,并在它自己的线程中踢掉每一个阶段。当第一个阶段的流量达到某个特定大小时,它会将该流量传递到下一个阶段进行处理,并启动一个新的流程继续填充。这里的想法是,最后阶段将关闭流,因为第一阶段是建立一个新的阶段,所以我的内存使用率将保持较低。
所以问题: 1)对这个设计的方向有什么高层次的想法? 2)是否有一种更简单的方法,您可以认为这可能适用于此? 3)有没有什么东西可以重复使用(不是我必须购买的产品)?
感谢,
拾音
的并行扩展看起来非常有前途。我想我可以为每个阶段创建一个任务,开始每个阶段,并使用新的Concurrent Collection类在阶段之间传递流。我真的不想使用VS 2010,我似乎无法再找到预览版。我会继续寻找。 – MikeD 2009-11-19 06:36:46
预览的下载链接如下,但MS似乎已经改变了他们的网站,链接不再工作:-( http://www.microsoft.com/downloads/details.aspx?FamilyId=348F73FD -593D-4B3C-B055-694C50D2B0F3 – ligos 2009-11-22 06:19:28