我現在有一個應用程序,這是一個管道設計。在第一階段中,它將一些數據和文件讀入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