Ⅰ 6核12線程能同時開多少程序
是進程中的一個執行路徑,多個線程之間共享一個內存空間(每個線程都擁有自己獨立的棧空間,共用一份堆內存),線程之間可以自由切換,並發執行。一個進程最少有一個線程。
線程實際上是在進程基礎之上的進一步劃分,一個進程啟動之後,裡面的若干執行路徑又可以劃分 成若干個線程
所謂的多線程,就是指在一個程序的進程中開辟多個執行路徑。
你的電腦能同時做多少件事?
打開計算機管理
在這里插入圖片描述
打開設備管理器–>處理器
在這里插入圖片描述
可以看到,圖片所示的電腦共有12個處理器。圖片所示的電腦的CPU型號為i7-8750H,該CPU為6核處理器,6核分了12線程,這12個線程相當於12個大腦,按理說只能同時做12件事情。
但是,打開任務管理器–>性能:
在這里插入圖片描述
可以看到,該電腦此時正在運行的有近4000個線程,可是我們明明只有12個「大腦」,這是怎麼做到的呢?這就是線程調度的功勞。
為了能使計算機在只有有限個「大腦」的情況下,不卡頓地執行更多的線程,線程調度為計算機的「大腦」們提供了兩種分配機制,即兩種線程調度機制。
線程調度的兩種機制
分時調度
所有線程輪流使用 CPU 的使用權,平均分配每個線程佔用 CPU 的時間。
即,把12個腦子的時間均分,有多少線程就均分成多少份,每個線程輪流使用。雖然是多線程,但是電腦始終是一個腦子只能同時干一件事。多線程只是為了讓多條執行路徑能均分,能更合理地交替執行。
所以早期的電腦(比如DOS系統)一旦中了病毒,非常可怕。因為它只能去執行病毒,執行不了其他的,連滑鼠鍵盤都動不了。
而所謂的線程調度,就是因為後續出現了一些多進程的操作系統(比如Windows),它們更合理地把一個計算機的時間切成n份,給各個軟體輪流使用,造成多個軟體同時在走的假象,本質上還是一次只同時做一件事,只是切換的很快而已。
搶占式調度(Java中使用的調度機制)
優先讓優先順序高的線程使用 CPU,如果線程的優先順序相同,那麼會隨機選擇一個(線程隨機性), Java使用的就是 搶占式調度。
Win10設置線程優先順序的方法:任務管理器–>詳細信息—>選中線程—>右鍵—>設置優先順序。
在這里插入圖片描述
優先順序越高,搶到的時間片(CPU分出來的一個個時間)的概率越大。誰搶到誰執行。當CPU空閑後,會主動拋出一個極短的時間片,由各個線程爭搶,哪個線程拿到,就執行哪個線程的路徑的事情。
時間片的概念是什麼? by 卡圖盧斯 [1]
時間片即CPU分配給各個程序的時間,每個線程被分配一個時間段,稱作它的時間片,即該進程允許運行的時間,使各個程序從表面上看是同時進行的。如果在時間片結束時進程還在運行,則CPU將被剝奪並分配給另一個進程。如果進程在時間片結束前阻塞或結束,則CPU當即進行切換。而不會造成CPU資源浪費。在宏觀上:我們可以同時打開多個應用程序,每個程序並行不悖,同時運行。但在微觀上:由於只有一個CPU,一次只能處理程序要求的一部分,如何處理公平,一種方法就是引入時間片,每個程序輪流執行。
CPU使用搶占式調度模式在多個線程間進行著高速的切換。對於CPU的一個核新而言,某個時刻, 只能執行一個線程,而 CPU的在多個線程間切換速度相對我們的感覺要快,看上去就是在同一時刻運行。 其實,多線程程序並不能提高程序的運行速度,但能夠提高程序運行效率,讓CPU的使用率更高。
比如把計算機的一秒比作人的一年,這一年幹了旅遊、回家、結婚等好幾件事,但是這幾件事並不是同時完成的,而是某幾天做某一件事。
輪流做和穿插著做其實並不會縮短整體時間,只是會提高效率。比如,等待用戶輸入和執行相應操作,就可以有一個線程專門等著接收輸入,有一個線程專門等著執行,提高CPU使用率。
事實上,反而「排隊做事」比「同時做事、期間來回切換」所用的時間更少,因為省去了來回切換所用的時間。
Ⅱ 電腦的八核,16線程是什麼意思
電腦的八核,16線程是
指的是CPU的內核有八個,CPU的內核是運算器和控制器,多核CPU可以增強並行處理能力,可以一次處理多個線程。在一個CPU上集成了幾個核心。單核就是只一個,雙核放兩個核心在CPU上邊,以此類推
線程是"進程"中某個單一順序的控制流。也被稱為輕量進程
線程是程序中一個單一的順序控制流程。在單個程序中同時運行多個線程完成不同的工作,稱為多線程
線程和進程的區別在於,子進程和父進程有相同的代碼段,不同的數據段,而多個線程則共享數據空間,每個線程有自己的執行堆棧和程序計數器為其執行上下文。多線程主要是為了節約CPU時間,發揮利用,根據具體情況而定。線程的運行中需要使用計算機的內存和CPU。
通俗的將計算機的越多,機器的性能越好,可以節約CPU處理數據的時間。進而發揮更好的性能。
Ⅲ 請問四核64位電腦最大能支持多少個線程
看內存和CPU 的利用率了。佔用少的就可以多開,佔用多就開得少。
Ⅳ CPU的核心數、線程數的關系和區別
一、關系:
1、線程數可以模擬出不同的CPU核心數。
CPU的核心數指的是硬體上存在著幾個核心,而線程數可以模擬出多個核心數的功能。線程數越多,越有利於同時運行多個程序,因為線程數等同於在某個瞬間CPU能同時並行處理的任務數。
2、對於一個CPU,線程數總是大於或等於核心數的。
一個核心最少對應一個線程,但通過超線程技術,一個核心可以對應兩個線程,也就是說它可以同時運行兩個線程。
二、區別:
1、存在形式不同。
(1)、CPU的核心數指的是硬體上真實存在的物體;
(2)、CPU的線程數只是一種邏輯上的概念,並非真實存在的物體,只是為了更好地描述CPU的運作能力。
2、線程數對於不同的CPU類型存在狀態不同。
(1)、對於Intel的CPU:除了核心數的說法之外,還可以使用線程數的概念,因為它是通過Intel超線程技術來實現的。
(2)、對於AMD的CPU:只有核心數的說法,而沒有線程數的概念,因為AMD的CPU沒有超線程技術,一個CPU核心固定地對應一個線程。
3、出現原因不同。
(1)、核心數出現的原因:處理器主頻提升上的技術遇到瓶頸,向「多核心」的方向發展可以在不用進行大規模開發的情況下將現有產品發展成為理論性能更為強大的多核心處理器系統,也因此出現了「核心數」的說法。
(2)、線程數出現的原因:為了進一步提高計算機多任務處理的工作能力。線程數越多,越有利於同時運行多個程序。
(4)一台電腦可同時開始多少線程擴展閱讀:
線程數的多少,自然會影響到下載速度的多少,這樣看來,下載線程數應該設置的越高越好,這樣的理解是錯誤的。線程數的多少,要根據服務端和用戶端的具體情況而定。
一般情況下,網路中的服務端,為用戶提供的連接線程數,在1—10個,用戶可以根據不同的服務端限制,來修改下載軟體的原始下載線程數。根據下載資源的熱門程度,其候選資源數量的不同,該任務下載可用的線程數也會不同,一般可以設置在35-50之間。