www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 公眾號精選 > 架構(gòu)師社區(qū)
[導讀]作為一名美食資淺愛好者,盡管小風哥我廚藝拙計,但依然阻擋不了我對烹飪的熱愛。那小風哥我通常是怎么做菜的呢?大廚與菜譜你沒猜錯,做菜之前先去下一份菜譜,照著菜譜一步步來:起鍋燒油、蔥姜蒜末下鍋爆香、倒入切好的食材、大火翻炒、加入適量醬油、加入適量鹽、繼續(xù)翻炒、出鍋嘍!這樣一道色香味...

作為一名美食資淺愛好者,盡管小風哥我廚藝拙計,但依然阻擋不了我對烹飪的熱愛。那小風哥我通常是怎么做菜的呢?
大廚與菜譜

你沒猜錯,做菜之前先去下一份菜譜,照著菜譜一步步來:起鍋燒油、蔥姜蒜末下鍋爆香、倒入切好的食材、大火翻炒、加入適量醬油、加入適量鹽、繼續(xù)翻炒、出鍋嘍!CPU?核數(shù)與線程數(shù)有什么關(guān)系?這樣一道色香味俱佳的小炒大功告成,裝盤端出來拿起筷子一嘗,難吃死了CPU?核數(shù)與線程數(shù)有什么關(guān)系?。火候有點過,醬油加的有點少,鹽加多了,中餐里的“火候”以及“適量”是最為神秘的存在,可以意會不可言傳。因此相對肯德基麥當勞之類的標準工業(yè)品,中餐更像是藝術(shù)。每個人炒出來的菜味道都不一樣,顯然嘛,每個人對火候以及適量的理解是不一樣的。對不起,跑題了CPU?核數(shù)與線程數(shù)有什么關(guān)系?雖然小風哥我廚藝不怎么樣,但輸廚藝不能輸氣場,有時我會幾樣一起來,這邊炒著A菜,那邊炒著B菜。也就是說,我可以同時按照兩份菜譜去做飯,如果小風哥足夠快,那么我可以同時炒 N 樣菜。
炒菜與線程
實際上CPU和廚師一樣,都是按照菜譜(機器指令)去執(zhí)行某個動作,從操作系統(tǒng)的角度講當CPU切換回用戶態(tài)后,CPU執(zhí)行的一段指令就是線程,或者說屬于某個線程。CPU?核數(shù)與線程數(shù)有什么關(guān)系?這和炒菜一樣,我可以按照菜譜抄魚香肉絲,那么炒菜時這就是魚香肉絲線程;我可以按照菜譜抄宮保雞丁,那么炒菜時這就是宮保雞丁線程。廚師個數(shù)就好比CPU核心數(shù),炒菜的樣數(shù)就好比線程數(shù),這時我問你,你覺得廚師的個數(shù)和可以同時抄幾樣菜有關(guān)系嗎?答案當然是沒有。CPU的核心數(shù)和線程個數(shù)沒有什么必然的關(guān)系。單個核心上可以跑任意多個線程,只要你的內(nèi)存夠就行;計算機系統(tǒng)內(nèi)也可以有任意多核數(shù),只要你有錢就行。看到這個答案你是不是覺得有點疑惑、有點疑問、有點不明所以,這好像和其它人說的不一樣?。?/span>別著急,我們慢慢講。
傻傻的CPU
CPU根本不理解自己執(zhí)行的指令屬于哪個線程,CPU也不需要理解這些,CPU需要做的事情就是根據(jù)PC寄存器中的地址從內(nèi)存中取出后執(zhí)行,其它沒了。CPU?核數(shù)與線程數(shù)有什么關(guān)系?你看CPU才不管你系統(tǒng)內(nèi)有多少線程。有多少線程是誰需要來關(guān)心的呢?是操作系統(tǒng)。線程是操作系統(tǒng)的把戲。
操作系統(tǒng)與多任務
很久很久以前,計算機一次只能執(zhí)行一個任務,你不能像現(xiàn)在這樣在計算機上一邊看電影一邊在下小電影,哦,不對,一邊寫代碼,一邊下載資料。要么你先寫代碼,寫完代碼后再去下資料,要么你先下資料然后再寫代碼,總之,這兩個任務不能同時進行。這顯然很不方便,就這樣,多任務——Multi-Tasking,誕生了。CPU?核數(shù)與線程數(shù)有什么關(guān)系?你CPU不是只知道執(zhí)行機器指令嗎?很好,那我操作系統(tǒng)就通過修改你的PC寄存器,讓你CPU執(zhí)行A任務的機器指令一段時間,然后下一段時間再去執(zhí)行B任務的機器指令,再然后下一個時間段去執(zhí)行C任務的機器指令,由于每一段時間非常少,通常在毫秒級別,那么在人類看來A、B、C三個任務在“同時”運行。這就是多任務的本質(zhì)。
進程與線程
CPU不知道執(zhí)行的某一段機器指令屬于A任務還是B任務,只有操作系統(tǒng)知道,同時操作系統(tǒng)還能知道任務A和B任務是否屬于同一個地址空間。如果屬于同一個地址空間,那么任務A和任務B就是我們熟悉的“多線程”;如果不屬于同一個地址空間,那么任務A和任務B就是我們熟悉的“多進程”,現(xiàn)在你應該明白這兩個概念了吧。CPU?核數(shù)與線程數(shù)有什么關(guān)系?這里出現(xiàn)了一個有點拗口的名詞,地址空間,Address Space,關(guān)于地址空間的概念以及進程線程這一部分更加詳細的講解,請參考小風哥的《深入理解操作系統(tǒng)》第7章,關(guān)注公眾號"碼農(nóng)的荒島求生"并回復”操作系統(tǒng)“即可。值得注意的是,計算機系統(tǒng)還在單核時代就已經(jīng)有多線程的概念了,我們之前說過,即使是單核也可以執(zhí)行多個線程,那么有的同學可能會有疑問,在單核的系統(tǒng)中開啟多個線程有什么意義嗎?
單核與多線程
假設現(xiàn)在有兩個任務,任務A和任務B,每個任務需要的計算時間都是5分鐘,那么無論是任務A和任務B串行執(zhí)行還是放到兩個線程中并行執(zhí)行,在單核環(huán)境下執(zhí)行完這兩個任務總需要10分鐘,因此有的同學覺得單核下多線程沒什么用。實際上,線程這個概念為程序員提供了一種編程抽象,我們可以把一項任務進行劃分,然后把每一個子任務放到一個個線程中去運行。CPU?核數(shù)與線程數(shù)有什么關(guān)系?假如你的程序帶有圖形界面,某個UI元素背后需要的大量運算,這時為了防止執(zhí)行該運算時UI產(chǎn)生卡頓,那么可以把這個運算任務放到一個單獨的線程中去。因此如果你的目的是防止當前線程因執(zhí)行某項操作而不得不等待,那么在這樣的應用場景下,你根本就不需要關(guān)心系統(tǒng)內(nèi)是單核還是多核以及有多少個核。
阻塞式I/O
這也是使用線程的經(jīng)典場景。如果沒有線程,那么執(zhí)行阻塞式I/O時整個進程會被操作系統(tǒng)暫停,但如果你開啟兩個線程,其中一個線程被阻塞時另一個線程依然可以繼續(xù)向前推進。這樣的話你就不需要去使用反人類的異步IO了。當然,這一切的前提是你的場景不涉及高性能以及高并發(fā),如果涉及的話那這就是另一個話題了,如果你想了解這一話題,關(guān)注公眾號“碼農(nóng)的荒島求生”并回復“高并發(fā)”即可。在這種簡單的場景下,你創(chuàng)建線程時也不需要關(guān)心系統(tǒng)中是單核還是多核。
多核時代
實際上,線程這個概念是從2003年左右才開始流行的,為什么?因為這一時期,多核時代到來了。CPU?核數(shù)與線程數(shù)有什么關(guān)系?之所以產(chǎn)生多核,是因為單核的性能提升越來越困難了。盡管采用多進程也可以充分利用多核,但畢竟多進程編程是很繁瑣的,這涉及復雜的進程間通信機制、進程間切換的較高性能損耗、進程間內(nèi)存相互隔離帶來的對內(nèi)存消耗等。線程這個概念很好的解決了上述問題,開始成為多核時代的主角,要想充分利用多核資源,線程是程序員的首選工具。
真正的并行
有了多核后,運行在兩個線程中的任務A和任務B實現(xiàn)了真正的并行。此前這樣一句話廣為引用,這句話是這么說的:
threads are for people who can't program state machines
“線程是為那些不懂狀態(tài)機的人準備的”,這句話在單核時代有它的道理,因為在單核時代,所有的任務都不是在同時向前推進,而是“交錯”前進,A前進一點,然后B前進一點,線程并不是實現(xiàn)這種“偽并行”唯一的方法,狀態(tài)機也可以。CPU?核數(shù)與線程數(shù)有什么關(guān)系?但在多核時代,這句話就不再適用了,對于大多數(shù)程序員來說多進程多線程幾乎是充分利用多核資源的唯一方法。如果你的場景是想充分利用多核,那么這時你的確需要知道系統(tǒng)內(nèi)有多少核數(shù),一般來說你創(chuàng)建的線程數(shù)需要與核數(shù)保持線性關(guān)系。也就是說,如果你的核數(shù)翻倍,那么創(chuàng)建的線程數(shù)也要翻倍。
需要多少線程?值得注意的是,線程不是越多越好。如果你的線程是不涉及任何I/O、沒有任何同步互斥之類的純計算類型,那么每個核心一個線程通常是最佳選擇。但通常來說,線程都需要一定的I/O,可能需要一定的同步互斥,那么這時適當增加線程可能會提高性能,但當線程數(shù)量到達一個臨界值后性能開始下降,這時線程間切換的開銷將顯著增加。這里之所以用適當這個詞,是因為這很難去量化,只能用你實際的程序根據(jù)真正的場景進行測試才能得到這個值。
總結(jié)
線程數(shù)和CPU核心數(shù)可以沒有任何關(guān)聯(lián),如果在使用線程時僅僅針對上述提到的幾個簡單場景,那么你根本不需要關(guān)心CPU是單核還是多核。但當你需要利用線程充分發(fā)揮多核威力時,通常情況下你創(chuàng)建的線程數(shù)與核數(shù)要保持一種線性關(guān)系,最佳系數(shù)通常需要測試才能得到。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉