回覆列表
  • 1 # 九流農家

    執行緒最少等於核數,或者n*核數,核數越多,可以執行的執行緒也越多,可以處理的任務量肯定更快。任務是由執行緒來執行的,一個任務可以有多個執行緒。按這種道理執行緒是越多處理速度越快。但是會出現一個問題,執行緒多了,併發的機率越大,數量也越多,這時候反而會降低效能,所以才會引入執行緒池,來控制執行緒數。

    或者

    不對

    完成一個任務可以有多程序和多執行緒兩種方式,到底哪種方式快呢?通常人們認為Windows系統是以程序為單位分配CPU時間片的,那麼使用多個程序就可以多分得一些CPU時間,自然就會比使用單獨程序多個執行緒的方式快一點了。事實上這種情況並不絕對正確,首先,建立程序比建立執行緒要多佔用系統資源,系統資源不足往往會引起系統性能的下降,導致任務完成的比較慢。其次,由於多個程序要操作同一個資料集合,必然會因為資料爭用導致程序狀態改變,同多個執行緒狀態改變相比,程序切換要使用更多的CPU時間。最後,使用單程序方式,由於程序少,每個程序又可以較多的獲得CPU時間片,從而能夠很大的改善程序的效能。由此可見,並不是使用多程序處理資料就一定比使用多個執行緒的單程序快。圖(1)顯示了使用兩種方式的程式效能變化曲線,從圖上可以看出,無論使用何種方式,程序和執行緒都不是越多越好,兩種方式都存在一個臨界點,超過這個臨界點,都會因為頻繁的程序或執行緒狀態切換而造成程式效能下降。使用多程序方式在到達臨界點之後再增加程序就會引起效能的下降,而且下降速度比單程序多執行緒方式到達臨界點之後的下降速度快,這是因為程序切換比執行緒切換更費時。

  • 中秋節和大豐收的關聯?
  • 怎麼我家路由器剛才不小心改密碼了,就什麼登陸密碼改了?