多線程編程在處理器數目上的基本情況

多線程編程技術能夠解決單處理器計算機和多處理器計算機的諸多問題,單處理器計算機大多用來運行最終用戶軟件,多處理器計算機通常用作服務器。

單處理器計算機
  • 多線程編程爲計算機用戶提供了更好的響應能力,並且使用空閒時間處理後臺任務。如果在單處理器計算機上使用多線程編程,那麼:

在任何時刻都只有一個線程在運行。

  • 後臺線程僅在主用戶線程空閒時才執行。連續運行的前臺線程將使後臺線程得不到處理器時間。

  • 對一個線程調用 Thread.Start 方法時,此線程只有等到當前線程結束或被操作系統搶佔後纔會執行。

  • 出現爭用條件的原因通常是,程序員未預見到一個線程可能會在一個難以控制的時刻被搶佔這一事實,有時就會出現另一線程搶先使用代碼塊這種情況。

多處理器計算機
多線程編程提供了更大的吞吐量。十個處理器可以完成一個處理器的十倍的工作量,不過,只有將任務分開並讓十個處理器同時工作才行;線程爲劃分任務並利用額外的處理能力提供了一種方便的辦法。如果在多處理器計算機上使用多線程編程,那麼:

  • 可以併發執行的線程的數目取決於處理器的數目。

  • 後臺線程只有在正在執行的前臺線程的數目小於處理器的數目時才執行。

  • 當您對一個線程調用 Thread.Start 方法時,此線程可能會,也可能不會立即執行,具體取決於處理器數目和當前在等待執行的線程的數目。

  • 爭用條件不僅可能因爲線程被意外搶佔而發生,還可能因爲在不同的處理器上執行的兩個線程在搶用同一代碼塊而發生。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章