2010-05-02 36 views
2

我明白當我執行Parallel.For和類似構造時,TPL使用工作竊取隊列來完成任務。任務並行庫如何在終端服務器或Web應用程序中擴展?

如果我正確理解這一點,構造將啓動一些任務,每個任務將開始處理項目。如果其中一項任務完成了他們的分配項目,它將開始從尚未完成其他任務的項目中竊取項目。這解決了項目1-100處理便宜而項目101-200昂貴的問題,並且兩項任務中的一項將僅處於空閒狀態直到另一項完成。 (我知道這是一個簡化的exaplanation。)

但是,這將如何在終端服務器或Web應用程序上進行擴展(假設我們在可在Web應用程序中運行的代碼中使用TPL)?我們可能會因爲有N個應用程序並行運行而導致CPU使用任務飽和嗎?

有沒有關於這個話題的任何信息,我應該閱讀?我還沒有找到特別的東西,但這並不意味着沒有。

回答

1

您可能可以通過轉移到異步模型來使用TPL來改進I/O綁定操作。您也可以通過在低負載情況下更多地使用Web服務器上可用的未使用處理器容量來提高請求延遲。你想仔細考慮這個問題,因爲在高負載情況下,處理器已經被100%利用,增加更多的並行會降低服務器的吞吐量。

這是在並行擴展團隊博客討論:

Using Parallel Extensions for .NET 4 in ASP.NET apps

我懷疑,同樣的道理也適用於終端服務器應用程序也。

+0

感謝您的鏈接,這種信息正是我一直在尋找的。 – 2010-05-08 03:41:30

相關問題