自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

多核和多線程那些事

開發(fā) 前端
作為一個(gè)程序員,線程,進(jìn)程,協(xié)程這些是我們必須要掌握的最基礎(chǔ)的知識,這就好比數(shù)學(xué)家必須要學(xué)習(xí)的基本幾何原理一樣,沒有它們,我們在編程的世界里寸步難行。

 作為一個(gè)程序員,線程,進(jìn)程,協(xié)程這些是我們必須要掌握的最基礎(chǔ)的知識,這就好比數(shù)學(xué)家必須要學(xué)習(xí)的基本幾何原理一樣,沒有它們,我們在編程的世界里寸步難行。

[[344934]]

并發(fā)和并行

并發(fā)和并行是我們經(jīng)常聽到的兩個(gè)詞,并發(fā)是指同一時(shí)間段運(yùn)行多個(gè)程序,比如我們一邊聽歌,一邊打字。而并行指的是同一時(shí)刻,強(qiáng)調(diào)的是同一個(gè)時(shí)間點(diǎn)并行運(yùn)行,很顯然,并行要求需要多核,而并發(fā)可以單核切換運(yùn)行程序,由于cpu的高速運(yùn)轉(zhuǎn),所以看起來并發(fā)很類似并行執(zhí)行,但是本質(zhì)上兩者是不同的。

 

多核和多線程那些事

 

 

 

多核

具有多個(gè)邏輯CPU內(nèi)核并且可以物理上同時(shí)執(zhí)行多條指令的計(jì)算機(jī)的處理器。計(jì)算機(jī)的“核心數(shù)”是計(jì)算機(jī)擁有的核心總數(shù)。計(jì)算機(jī)可能具有多個(gè)處理器,每個(gè)處理器可能具有多個(gè)核心;核心數(shù)是所有處理器上的核心總數(shù)。

 

多核和多線程那些事

 

多線程

可以通過同時(shí)在多個(gè)內(nèi)核上運(yùn)行來利用多核計(jì)算機(jī)的程序。通常,兩倍的內(nèi)核等于兩倍的計(jì)算能力(對于支持多線程的程序),盡管某些問題受CPU使用率以外的因素的限制。這些問題將不會帶來多線程帶來的巨大收益。

多線程的意義

有時(shí)程序需要在特定時(shí)間做特定的事情。比如我們有一個(gè)可見窗口的程序。該程序可能正在進(jìn)行大量的后臺數(shù)字運(yùn)算,但是它仍然可以響應(yīng)用戶事件(例如單擊按鈕并調(diào)整其大小),這種情況可以通過異步處理來完成,異步處理將需要您的一個(gè)線程重復(fù)檢查GUI工作是否間隔執(zhí)行,暫停正在執(zhí)行的操作以及處理GUI一段時(shí)間。許多事情都是通過這種方式完成的。

 

多核和多線程那些事

 

然而,處理它的另一種可能更好的方法是使用線程。我們不需要擔(dān)心該程序在邏輯運(yùn)算和GUI管理之間來回切換,操作系統(tǒng)將為您進(jìn)行管理。即使只有一個(gè)內(nèi)核,您仍然可以運(yùn)行多個(gè)線程,并且操作系統(tǒng)將盡最大努力確保所有正在運(yùn)行的進(jìn)程中的所有正在運(yùn)行的線程都能公平分配CPU時(shí)間。

多線程和多核關(guān)系

首先兩者本質(zhì)上沒有必然的聯(lián)系,多線程可以運(yùn)行在單核上,也可以運(yùn)行在多核上。一個(gè)線程可以某一時(shí)間段在一個(gè)核心上運(yùn)行,下一刻在另一個(gè)核心上運(yùn)行。

線程是內(nèi)核調(diào)度的最小單位。一個(gè)進(jìn)程可以有多個(gè)線程,它們共同完成某個(gè)任務(wù)。線程是被包裹在進(jìn)程中的,進(jìn)程提供了線程運(yùn)行的資源。

進(jìn)程之間互不影響,一個(gè)進(jìn)程掛掉,并不影響其它進(jìn)程,然而一個(gè)進(jìn)程內(nèi)的一個(gè)線程出現(xiàn)問題 ,其它線程也無法正常運(yùn)行。

CPU

CPU也叫內(nèi)核,是由單晶硅以一定的生產(chǎn)工藝制造出來的,CPU所有的計(jì)算、接受/存儲命令、處理數(shù)據(jù)都由核心執(zhí)行。

 

[[344935]]

 

CPU執(zhí)行多個(gè)程序靠的是它的時(shí)鐘,通過時(shí)鐘中斷,它可以在不同的程序之間切換,這樣看上去,我們的程序就彷佛在并行執(zhí)行。

超線程技術(shù)

超線程技術(shù)為CPU中存在的每個(gè)物理核心創(chuàng)建兩個(gè)虛擬處理核心。物理核心為虛擬核心提供動力,然后虛擬核心承擔(dān)任務(wù)處理的責(zé)任。每個(gè)虛擬內(nèi)核都彼此相同,盡管兩者都不像物理內(nèi)核那么強(qiáng)大,但是當(dāng)不啟用HT時(shí),它們合起來遠(yuǎn)遠(yuǎn)超過了物理內(nèi)核的能力。這些虛擬內(nèi)核的使用使CPU可以實(shí)時(shí)在內(nèi)核之間委派任務(wù)。

超線程的優(yōu)點(diǎn)

由CPU密集型操作(例如同時(shí)運(yùn)行兩個(gè)苛刻的程序)創(chuàng)建的工作負(fù)載(該操作會降低單個(gè)物理核心的運(yùn)行速度,而不論其原始功率如何)都會在處理器的虛擬核心之間分配利用HT技術(shù)。使用兩個(gè)虛擬內(nèi)核同時(shí)處理任務(wù),處理時(shí)間更短,程序打開速度更快,并且在多任務(wù)處理期間您的計(jì)算機(jī)將保持更高的響應(yīng)速度。簡而言之,超線程可提高處理效率。

多核的優(yōu)勢

多核技術(shù)具有超線程技術(shù)的所有優(yōu)點(diǎn)并且具有更多的優(yōu)勢。超線程技術(shù)為每個(gè)物理內(nèi)核使用兩個(gè)虛擬內(nèi)核來更有效地處理任務(wù),而多內(nèi)核技術(shù)則增加了物理內(nèi)核。由于單個(gè)物理核心比單個(gè)虛擬核心更強(qiáng)大,因此雙核處理器比具有超線程的單核處理器更強(qiáng)大。許多較新的型號CPU是超線程和多核的,從而實(shí)現(xiàn)了更高的性能。

 

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2021-04-13 18:16:07

多線程安全代碼

2015-08-20 09:17:36

Java線程池

2020-11-29 17:03:08

進(jìn)程線程協(xié)程

2015-11-24 15:13:15

2020-10-29 07:06:39

Python多線程多核

2021-03-07 16:31:35

Java編譯反編譯

2009-03-12 10:52:43

Java線程多線程

2009-03-26 22:54:33

IBM院士Sun

2011-05-19 16:47:50

軟件測試

2012-05-01 08:06:49

手機(jī)

2024-02-04 17:03:30

2017-05-15 21:50:54

Linux引號

2019-01-07 12:02:02

TCP長連接Java

2021-01-25 10:05:27

ReactDOM前端

2017-12-21 08:06:40

2018-12-26 13:22:05

NVMeNVMe-oF數(shù)據(jù)

2019-07-29 15:39:13

游戲CPU優(yōu)化

2021-10-19 21:39:51

Unsafe構(gòu)造器內(nèi)存

2015-05-28 14:02:09

JavaJava日志性

2011-12-02 10:32:23

Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號