CPU 核心數 與 線程數 的關系
一個CPU 核心隻能跑一個線程
由于Intel公司引入的超線程技術,使得實體CPU核心和虛拟CPU核心存在一個1:2的關系拓展。
是以如下圖,原本4個核心的電腦,同時隻能跑4個線程;由于1:2關系,拓展為8個邏輯處理器,是以可以同時跑8個線程。

CPU 時間片輪轉機制
Q:為啥我的電腦跑的程序遠遠多于CPU的邏輯處理器個數?
A:
CPU 将時間線分割成一個個的時間片
運用RR排程算法,進行時間片輪轉
每個線程輪流擷取CPU時間片進行操作
Q:為啥我感受不到線程在切換
人的反應時間在1s~0.01s
CPU執行一條指令 0.6納秒ns
1秒(s)=1000000000納秒(ns)
程序最大線程數限制
Linux 一個程序最多開1000個線程
Windows 一個程序最多開2000個線程
Q:為什麼限制?
A:每每new一個新線程,線程會通過程序向作業系統申請資源(作業系統不直接配置設定資源給線程,隻配置設定資源給程序)。程序再給該線程配置設定:
棧空間,預設值是1M,1000個線程會耗費1G。
句柄(檔案描述符)。句柄是用來指向記憶體位址的開頭位置。Linux限制最多1024個句柄