我只是發現我周圍的C#並行編程方式並理解核心和真正的並行編程的意義。C#中的單個任務是否可以在多核系統上並行執行?
但我仍然有一個問題:
說我有一個長期運行的任務,這是否意味着這將使用從線程池,以實現真正的並行編程不同的內核線程執行。
或者它依賴於傳遞到任務的實際委託?
我希望我的問題是清楚的。
我只是發現我周圍的C#並行編程方式並理解核心和真正的並行編程的意義。C#中的單個任務是否可以在多核系統上並行執行?
但我仍然有一個問題:
說我有一個長期運行的任務,這是否意味着這將使用從線程池,以實現真正的並行編程不同的內核線程執行。
或者它依賴於傳遞到任務的實際委託?
我希望我的問題是清楚的。
委託本身沒有什麼區別。重要的是TaskScheduler
。
默認TaskScheduler
將通過ThreadPool
運行它們..讓他們同步運行,你會在當前正在使用的TaskScheduler
實例..通過如靜態TaskScheduler.FromCurrentSynchronizationContext
。
真正的並行編程需要多個內核,因爲線程必須在不同的線程中執行並行真正辦成。在單核系統只能實現假並行,因爲不同的胎面必須通過分配的時隙共享的核心。當前線程在單核上運行時,其他踏板正在等待。
This [answer](http://stackoverflow.com/a/18882300/1082327)可能有幫助 – PoweredByOrange
如果你問是否一個* SINGLE *任務會神奇地在不同的CPU上同時運行:否。詢問有關.NET任務並行庫對.Net線程池:看看這個鏈接:[我應該使用線程池或任務並行庫的IO綁定操作?(http://stackoverflow.com/questions/5213695/should -i使用,線程池,或任務並行庫換IO綁定的操作) – paulsm4