單核cpu多核cpu如何執行多線程

花了很多時間來整理這方面的相關內容,參考博客:多CPU,多核,多進程,多線程

程序和進程

  • 程序: 爲完成特定任務,用某種語言編寫的一組指令集合,即一段靜態的代碼
  • 進程:程序的一次執行過程,或是正在運行的一個程序,是一個動態的過程,比如電腦上的各種運行中的軟件

進程和線程

  • 進程可進一步細化爲線程,是一個程序內部的一條執行路徑,比如殺毒軟件中的體檢,殺毒,清理等都是一個進程中的多個線程
  • 一個進程同一時間並行多個線程,多線程是程序有多個線程在同時執行,就表示支持多線程
  • 線程是CPU調度和分配的基本單位(可以理解爲CPU只能看到線程)
  • 進程是操作系統進行資源分配(包括cpu、內存、磁盤IO等)的最小單位
  • java默認有2個線程:main和GC

並行與併發

  • 並行: 指在同一時刻,有多條指令(線程)在多個處理器(cpu上多個核)上同時執行,並行在多處理器系統中存在
  • 併發: 指在同一時刻只能有一條指令執行,但多個進程指令被快速的輪換執行,使得在宏觀上具有多個進程同時執行的效果,但在微觀上並不是同時執行的,只是把時間分成若干段,使多個進程快速交替的執行,併發可以在單處理器和多處理器系統中都存在

單核多線程

單核多線程指的是單核CPU輪流執行多個線程,通過給每個線程分配CPU時間片來實現,只是因爲這個時間片非常短(幾十毫秒),所以在用戶角度上感覺是多個線程同時執行。

多核多線程

可以把多線程分配給不同的核心處理,其他的線程依舊等待,相當於多個線程並行的在執行

CPU的多核和應用程序的多線程的關係

多核就是系統同時可以運行多個線程,比如雙核可以同時執行兩個線程。單核兒只能一次執行一個線程

規律

  • 單CPU中進程只能是併發,多CPU計算機中進程可以並行也可以併發。
  • 單CPU單核中線程只能併發,單CPU多核中線程可以並行也可以併發。
  • 無論是併發還是並行,使用者來看,看到的是多進程,多線程。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章