簡體   English   中英

C#並行處理多個任務

[英]c# parallelism multiple tasks

我想實現以下目標:

  • 創建一堆mongo查詢

  • 對於每個查詢,將反序列化的mongo數據集獲取為ObjectA

  • 地圖的所有ObjectA以列表ObjectB (需要給予一定的時間,我們正在與幾百萬對象時)

  • 當映射完成,upserts所有ObjectB (中環),以一個新的蒙戈DB / collection(也需要一些時間),並開始讀取/映射下一個數據的下一個查詢設定

  • 如果下一個映射是在最后一個mongo upsert完成之前完成的,請等待它完成,然后開始將該數據集寫入mongo

現在,我一直在玩Task ,我認為這是可行的方法,但是我很難做到這一點。

我應該運行2組任務嗎?

如何在“獲取/映射任務”和“寫入mongo任務”之間創建“依賴關系”?

任何幫助表示贊賞,謝謝!

看看數據流http://msdn.microsoft.com/en-us/library/hh228603(v=vs.110).aspx

您可以為過程的每個階段創建一個塊,然后將它們鏈接在一起。

  1. 執行查詢(TransformBlock)
  2. 轉換響應(TransformBlock)
  3. upsert(ActionBlock)

那么您可以將唯一查詢數據循環發布到數據流中,並根據需要設置並行性。 例如,只要您沒有內存問題,就提高階段1和階段2的並行性,但是使階段3不並行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM