12個線程都能用上嗎?
不一定。
簡單點說吧,處理器核數(包含超線程數)是一種執行資源,資源數量就是核數個數。應用程序的線程數就是服務請求數。而操作系統的作用是如果用有限的資源來服務好應用程序的請求,這就是進程調度的功能。
一般情況下,服務請求線程會“相對公平”地分配到核上運行,并且在時間片上輪流使用的,即并發執行(不一定是并行執行)。
比如系統有4個核,如果:
1、只有3個線程,那就分配到3個核上運行
2、只有8個線程,那就每個核分配兩個線程運行
3、只有10個線程,那就有些核跑3個線程,有些核跑2個線程