2011-04-17 53 views
2

我一直在客戶端應用程序上使用.NET4的Parallel命名空間。似乎做了一個相當體面的工作,真正加快循環,而不用擔心線程。 但是,在由ASP.NET驅動的網站上,服務器環境中的建議是什麼?如果我想象一個具有四個CPU內核的服務器,並且我使用基於Parallel命名空間方法的代碼,那麼我可以循環任何我有很快速度的列表。 同時我可能會阻塞所有四個CPU內核。相反,如果我只使用一個線程來完成循環,其他用戶可以訪問我網站的同一頁面並獲得響應 - 只需要更慢。 那麼Parallel命名空間,ASP.NET和IIS如何一起玩呢?它以某種方式管理?.NET 4服務器環境中的並行命名空間 - 優缺點?

回答

1

個人而言,我最擔心的是會話(在ORM工具中)不是線程安全的,因此任何線程都需要自己的會話。因此,在使用ORM工具(如果有的話,即實體框架)和自動並行性時要考慮到一個主要問題。

也直接從MSDN:.NET Framework並行擴展允許您嵌套並行循環。在這種情況下,運行時環境會協調使用處理器資源。你會發現,嵌套並行循環中,每個循環使用的線程少於非嵌套循環。

一個相關的問題是處理服務器應用程序中的並行循環。 Parallel類嘗試以與嵌套循環處理完全相同的方式處理服務器應用程序中的多個AppDomain。如果服務器應用程序已經在使用所有可用的線程池線程來處理其他ASP.NET請求,則並行循環將只在調用它的線程上運行。如果工作負載減少並且其他線程變得可用並且沒有其他ASP.NET工作要處理,則循環將開始使用其他線程。

+0

說得好。另外,如果您擔心CPU分配問題,並行環路會有超負荷接受最大並行度參數 - 您可以根據服務器配置對其進行調整。 – lukiffer 2011-04-17 17:22:39

+2

好的,那麼當使用Parallel時,參數「頁面總體上變慢,但對於當前正在運行它的頁面而言速度很快」不是/不再是真實的。但是,如果我自己做所有線程的東西,這可能是一個問題。感謝您的陳述。 – Krumelur 2011-04-17 18:54:11