2010-08-15 85 views
0

我正在閱讀Joe Albahari的並行擴展優秀article。他說,並行擴展和鎖定 - C#

利用多內核是容易 大多數服務器應用程序,其中每個 線程可以獨立處理 單獨的客戶端請求,但在桌面上更難 - 因爲它通常 要求你把你的 計算密集型代碼和做 如下:

  1. 劃分成小塊。
  2. 通過多線程並行執行這些塊。
  3. 以線程安全和高性能方式列出可用結果。

雖然你可以做到這一切與 經典的多線程結構, 它的尷尬 - 特別的步驟劃分和整理的 。 A 更進一步的問題是,線程安全的鎖定策略 會在許多線程同時對同一數據工作時引發很多爭用。

PFX庫已經專門設計了 以幫助在這些 的情況。

我想知道PFX如何減少此爭議?

AFAIK,線程由操作系統管理,操作系統負責提供和釋放鎖。像PFX這樣的其他東西都是抽象的,它處理好鎖定並嘗試用非常小的鎖定來完成這項工作。我想這是可能的,甚至直接操縱線程並仔細鎖定以避免爭執。

這是正確的嗎?或者有沒有更好的方式來執行線程安全操作,而不使用鎖?

回答

1

很多工作都進入了PFX的分區,並且還增強了ThreadPool的工作隊列。在這兩者之間,消除了很多爭用(與標準的共享生產者/消費者隊列方法相比)。