CPU的核心和線程數(shù)是沒(méi)有關(guān)系的。
支持超線程技術(shù)的CPU,單個(gè)核心可以同時(shí)并發(fā)兩個(gè)線程進(jìn)行協(xié)同工作,相比單線程效率更高,但也達(dá)不到想象中性能翻倍的效果。
而不支持超線程技術(shù)的CPU,一個(gè)核心就只能以一個(gè)線程進(jìn)行運(yùn)算。
因?yàn)檫@個(gè)原因,現(xiàn)在有些人喜歡把支持超線程CPU的核心乘以2后進(jìn)行比較,比如把支持超線程的雙核CPU和四核進(jìn)行比較,也就出現(xiàn)了真四核和偽四核的說(shuō)法。
---------------------------------------------------------------------------------------------------------------------------------------------------
現(xiàn)代的體系,一般 CPU 會(huì)有多個(gè)核心,而多個(gè)核心可以同時(shí)運(yùn)行多個(gè)不同的線程或者進(jìn)程。
當(dāng)每個(gè) CPU 核心運(yùn)行一個(gè)進(jìn)程的時(shí)候,由于每個(gè)進(jìn)程的資源都獨(dú)立,所以 CPU 核心之間切換的時(shí)候無(wú)需考慮上下文。
當(dāng)每個(gè) CPU 核心運(yùn)行一個(gè)線程的時(shí)候,由于每個(gè)線程需要共享資源,所以這些資源必須從 CPU 的一個(gè)核心被復(fù)制到另外一個(gè)核心,才能繼續(xù)運(yùn)算,這占用了額外的開(kāi)銷。換句話說(shuō),在 CPU 為多核的情況下,多線程在性能上不如多進(jìn)程。
因而,當(dāng)前面向多核的服務(wù)器端編程中,需要習(xí)慣多進(jìn)程而非多線程
多核CPU具有多個(gè)完整的計(jì)算單元,在運(yùn)行多線程程序的時(shí)候,多個(gè)核心的運(yùn)行情況可以參考單個(gè)核心的運(yùn)行情況,來(lái)看待線程的運(yùn)行,換入,換出,阻塞,資源競(jìng)爭(zhēng)等問(wèn)題。
----------------------------------------------------------------------------------------------------------------------------------------------------
對(duì)于多核CPU就要考慮線程之間的資源競(jìng)爭(zhēng)和線程之間的隔離性,數(shù)據(jù)的一致性等問(wèn)題,做好并發(fā)控制。
----------------------------------------------------------------------------------------------------------------------------------------------------
單處理機(jī) 和 多處理機(jī) 在運(yùn)行多線程的時(shí)候的情形可以類比,都會(huì)出現(xiàn) 丟失修改,臟讀,不可重復(fù)讀 等情形,只要處理好這三種情況即可,不必繼續(xù)深究了,操作系統(tǒng),硬件什么的水太深了。咱們往高級(jí)程序設(shè)計(jì)方向去吧。不要把精力浪費(fèi)在這些事情上了。