簡體   English   中英

ParallelFor中包含的WF序列中的所有活動都應該是AsyncCodeActivity嗎?

[英]Should ALL activities within a WF Sequence contained in a ParallelFor be AsyncCodeActivity?

AI具有WF 4應用程序,該應用程序包含一個序列工作流程,該工作流程具有一個ParallelFor,其中ParallelFor包含具有三個順序活動的序列。 這些活動中的第一個是受計算限制的(它生成證書簽名請求),第二個是受IO限制的(它發送電子郵件),而第三個任務也是IO綁定的(它更新數據庫)。

我最初將它們全部開發為CodeActivities,並看到它們必須是AsyncCodeActivities才能真正在多線程模式下運行。 因此,我將第一個計算綁定活動修改為AsyncCodeActivity,並且可以看到它正在多線程執行。 (至少我可以在開發機上觀察到更高的處理器利用率,這使我相信它現在正在運行多線程)

但是,后續任務仍保留為非異步CodeActivities。 我的問題如下:

  1. 我是否也應該將第二和第三活動轉換為異步(我懷疑會是這種情況)?

  2. 如果不是,當第一個是AsyncCodeActivitiy而第二個和第三個不是AsyncCodeActivitiy時,如何在ParallelFor中實際執行處理?

對於所有並行的子活動,它們是在同一時間安排的。 這意味着放入隊列中,並且調度程序一次僅執行一次。 對於異步活動,這意味着開始已調度,並且可以生成其他線程,而結束部分則在發出信號通知已完成時進行調度,並在調度程序處理完之后真正執行。

實際上,這意味着對於在服務器上執行的具有大量其他工作的工作流,異步活動最適合用於網絡或數據庫IO等異步IO。 在服務器上,將多個CPU線程添加到一個已經繁忙的系統中,甚至可能使速度變慢。 如果工作流在客戶端上執行,則異步IO和CPU都有意義。

暫無
暫無

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

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