首页
/
每日頭條
/
生活
/
多路複用與多路分解概念
多路複用與多路分解概念
更新时间:2024-10-21 18:05:50

啥叫I/O多路複用? epoll又是個什麼東西? 你或許看過很多文章,但是還是感覺雲裡霧裡的,今天,我們抛開文字,釋放動圖,或許你就理解了。

I/O多路複用

通常的一次的請求結果如下圖所示:

多路複用與多路分解概念(動圖了解IO多路複用)1

但是,服務器往往不會隻處理一次請求,往往是多個請求,這一個請求,這時候每來一個請求,就會生成一個進程或線程。

多路複用與多路分解概念(動圖了解IO多路複用)2

在這些請求線程或者進程中,大部分都處于等待階段,隻有少部分是接收數據。這樣一來,非常耗費資源,而且這些線程或者進程的管理,也是個事兒。

多路複用與多路分解概念(動圖了解IO多路複用)3

于是,有人想到一個辦法:我們隻用一個線程或者進程來和系統内核打交道,并想辦法把每個應用的I/O流狀态記錄下來,一有響應變及時返回給相應的應用。

多路複用與多路分解概念(動圖了解IO多路複用)4

或者下圖:

多路複用與多路分解概念(動圖了解IO多路複用)5

select、poll、epoll

select, poll, epoll 都是I/O多路複用的具體實現,他們出現是有先後順序的。

select是第一個實現 (1983 左右在BSD裡面實現的)。

select 被實現後,發現諸多問題,然後1997年實現了poll,對select進行了改進,select和poll是很類似的。

再後來,2002做出重大改進實現了epoll。

epoll和 select/poll 有着很大的不同:

例如:select/poll的處理流程如下:

多路複用與多路分解概念(動圖了解IO多路複用)6

而epoll的處理流程如下:

多路複用與多路分解概念(動圖了解IO多路複用)7

這樣,就無需遍曆成千上萬個消息列表了,直接可以定位哪個socket有數據。

那麼,這是如何實現的呢?

早期的時候 epoll的實現是一個哈希表,但是後來由于占用空間比較大,改為了紅黑樹和鍊表。

多路複用與多路分解概念(動圖了解IO多路複用)8

其中鍊表中全部為活躍的鍊接,紅黑樹中放的是所有事件。兩部分各司其職。 這樣一來,當收到内核的數據時,隻需遍曆鍊表中的數據就行了,而注冊read事件或者write事件的時候,向紅黑樹中記錄。

結果導緻:

  • 創建\修改\删除消息效率非常高:O(logN)。
  • 獲取活躍鍊接也非常快,因為在一個時間内,大部分是不活躍的鍊接,活躍的鍊接是少數,隻需要遍曆少數活躍的鍊接就好了

更多精彩内容,請關注我的微信公衆号 互聯網技術窩 或者加微信共同探讨交流:

多路複用與多路分解概念(動圖了解IO多路複用)9

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
部級課題重大意義
部級課題重大意義
《文史知識》創刊号封面中華書局《文史知識》雜志1981年創刊,于今整整40年。40年來,幾代編輯堅持“守正出新”的理念、“大專家寫小文章”的傳統,打造這本兼具知識性與趣味性的文史讀物,影響了幾代讀者。《文史知識》成為傳播中華優秀傳統文化、普...
2024-10-21
三相異步電動機繞組故障有哪些
三相異步電動機繞組故障有哪些
繞組短路,是指繞組的線圈導線絕緣損壞,不應相通的線匝直接相碰,構成一個低阻抗環路。通常使用短路偵察器來査找繞組短路點,也可用直接觀察法和直流電阻法進行檢査。根據短路故障出現的部位和故障嚴重程度,一般可按以下方法處理:(1)局部墊絕緣:适用于...
2024-10-21
上海世紀聯華超市分布點
上海世紀聯華超市分布點
上海世紀聯華超市分布點?澎湃财訊截至5月1日,聯華股份旗下的世紀聯華、華聯吉買盛複市率已達100%,聯華超市直營門店複市率76.6%繼上海崇明、金山、奉賢三區位于防範區的門店陸續完成線下開業後,今日,在松江、浦東、青浦、虹口等區商務委和門店...
2024-10-21
雞毛菜的種植方法和注意事項
雞毛菜的種植方法和注意事項
雞毛菜的種植方法和注意事項?種植時間雞毛菜可一年皆可四季種植,春季可在11-2月在大棚溫室中種植,夏季在4-8月種植,8-11月時秋冬種植時間,我來為大家科普一下關于雞毛菜的種植方法和注意事項?下面希望有你要的答案,我們一起來看看吧!雞毛菜...
2024-10-21
純钛是什麼材質
純钛是什麼材質
純钛是什麼材質?純钛的材質是钛金屬,屬于一種輕金屬,我來為大家講解一下關于純钛是什麼材質?跟着小編一起來看一看吧!純钛是什麼材質純钛的材質是钛金屬,屬于一種輕金屬。純钛具有銀白色金屬光澤,是最重的輕金屬,其沸點3260℃,其熔點高于鐵和鎳。...
2024-10-21
Copyright 2023-2024 - www.tftnews.com All Rights Reserved