日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 充電吧
[導(dǎo)讀]高并發(fā)編程里多線程(進程)的弊端其實從著名的 C10K 問題的時候, 就談到了高并發(fā)編程時, 采用多線程(或進程)是一種不可取的解決方案, 核心原因是因為線程(或進程)本質(zhì)上都是操作系統(tǒng)的資源, 每個

高并發(fā)編程里多線程(進程)的弊端
其實從著名的 C10K 問題的時候, 就談到了高并發(fā)編程時, 采用多線程(或進程)是一種不可取的解決方案, 核心原因是因為線程(或進程)本質(zhì)上都是操作系統(tǒng)的資源, 每個線程需要額外占用1M或者2M的內(nèi)存空間, 所以2G內(nèi)存,能承受的線程數(shù)差不多只能到1k這個量級。
而且線程的調(diào)度由操作系統(tǒng)調(diào)度, 當線程或者進程數(shù)到達一定量級的時候, 據(jù)有人試驗的結(jié)果是并發(fā)的線程數(shù)到達1k以上后, 操作系統(tǒng)基本上就已經(jīng)不堪重負,調(diào)度不過來了。
事件驅(qū)動
已知多線程已經(jīng)無法解決高并發(fā)問題, 所以才有了異步IO,事件驅(qū)動等概念來解決高并發(fā)編程。 很典型的就是 Node.js ,傳說中的事件驅(qū)動, 其實就是在底層使用了 libuv 然后通過各種回調(diào)函數(shù)來注冊事件, 當事件觸發(fā)的時候回調(diào)函數(shù)也被觸發(fā)。 使用事件驅(qū)動的方式確實能解決高并發(fā)的問題, 但是因為事件驅(qū)動最費勁的就是各種喪心病狂不停的回調(diào), 在回調(diào)里面再嵌套回調(diào),容易陷入所謂的【回調(diào)地獄】。 這也是 Node.js 最受人詬病的地方。
高并發(fā)解決方案之協(xié)程
面向?qū)ο笞畹湫偷恼Z言是 Java , 事件驅(qū)動最典型的語言是 Node.js , 協(xié)程最典型的語言就是 golang , 當然國內(nèi)程序員響馬的 fibjs 也是基于協(xié)程來進行并發(fā)的, 也非常出色,只不過在生態(tài)上還是發(fā)展的太慢了。 個人看來協(xié)程相對于事件驅(qū)動是一種更先進的高并發(fā)解決方案, 把復(fù)雜的邏輯和異步都封裝在底層, 讓程序員在編程時感覺不到異步的存在, 用響馬的話就是【用同步抒寫異步情懷】。 個人很看好協(xié)程的發(fā)展, 同時也非常看好 golang 的前景,

協(xié)程也叫用戶級線程, 很多人分不清楚協(xié)程和線程和進程的關(guān)系。 簡單的說就是: 線程和進程的調(diào)度是由操作系統(tǒng)來調(diào)控, 而協(xié)程的調(diào)度由用戶自己調(diào)控。 所以協(xié)程調(diào)度器可以在協(xié)程A即將進入阻塞IO操作, 比如 socket 的 read (其實已經(jīng)設(shè)置為異步IO )之前, 將該協(xié)程掛起,把當前的棧信息 StackA 保存下來, 然后切換到協(xié)程B, 等到協(xié)程A的該 IO操作返回時, 再根據(jù) StackA 切回到之前的協(xié)程A當時的狀態(tài)。

小結(jié)

協(xié)程誕生解決的是低速IO和高速的CPU的協(xié)調(diào)問題,解決這類問題主要有三個有效途徑:

1.異步非阻塞網(wǎng)絡(luò)編程(libevent、libev、redis、Nginx、memcached這類)

2.協(xié)程(golang、gevent)

3.“輕量級線程”,相當于是在語言層面做抽象(Erlang)

對比之下協(xié)程的編程難度較低,不要求編程人員要有那么高的抽象思維能力。再加上golang在這方面優(yōu)秀的實踐,協(xié)程目前的前途還是一片光明的。當然還有一點,我們要承認無論你狀態(tài)機、callback設(shè)計得多么精妙,現(xiàn)實中阻塞事很難以避免的。

避免了Network IO Blocking,還有數(shù)據(jù)庫Blocking,
還有Disk IO Blocking,還有數(shù)據(jù)庫Blocking,還有日志Blocking,還有第三方庫blocking,還有人類自己導(dǎo)致的blocking……協(xié)程是應(yīng)對這些的不錯的解決方案,當然協(xié)程的接口還是太過晦澀。So,Life is Short,Use Golang。線程還是更適合作為多核計算的不二法門存在的。

原文鏈接:https://studygolang.com/articles/2396

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

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉