日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

非阻塞I/O多路复用机制

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 非阻塞I/O多路复用机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題外話:我們現在要仔細的說一說I/O多路復用機制,因為這個說法實在是太通俗了,通俗到一般人都不懂是什么意思。博主打一個比方:小曲在S城開了一家快遞店,負責同城快送服務。小曲因為資金限制,雇傭了一批快遞員,然后小曲發現資金不夠了,只夠買一輛車送快遞。


經營方式一
客戶每送來一份快遞,小曲就讓一個快遞員盯著,然后快遞員開車去送快遞。慢慢的小曲就發現了這種經營方式存在下述問題

  • 幾十個快遞員基本上時間都花在了搶車上了,大部分快遞員都處在閑置狀態,誰搶到了車,誰就能去送快遞

  • 隨著快遞的增多,快遞員也越來越多,小曲發現快遞店里越來越擠,沒辦法雇傭新的快遞員了

  • 快遞員之間的協調很花時間

綜合上述缺點,小曲痛定思痛,提出了下面的經營方式


經營方式二
小曲只雇傭一個快遞員。然后呢,客戶送來的快遞,小曲按送達地點標注好,然后依次放在一個地方。最后,那個快遞員依次的去取快遞,一次拿一個,然后開著車去送快遞,送好了就回來拿下一個快遞。

對比
上述兩種經營方式對比,是不是明顯覺得第二種,效率更高,更好呢。在上述比喻中:

  • 每個快遞員------------------>每個線程

  • 每個快遞-------------------->每個socket(I/O流)

  • 快遞的送達地點-------------->socket的不同狀態

  • 客戶送快遞請求-------------->來自客戶端的請求

  • 小曲的經營方式-------------->服務端運行的代碼

  • 一輛車---------------------->CPU的核數

?

于是我們有如下結論
1、經營方式一就是傳統的并發模型,每個I/O流(快遞)都有一個新的線程(快遞員)管理。
2、經營方式二就是I/O多路復用。只有單個線程(一個快遞員),通過跟蹤每個I/O流的狀態(每個快遞的送達地點),來管理多個I/O流。

下面類比到真實的redis線程模型,如圖所示


參照上圖,簡單來說,就是。我們的redis-client在操作的時候,會產生具有不同事件類型的socket。在服務端,有一段I/0多路復用程序,將其置入隊列之中。然后,文件事件分派器,依次去隊列中取,轉發到不同的事件處理器中。
需要說明的是,這個I/O多路復用機制,redis還提供了select、epoll、evport、kqueue等多路復用函數庫,大家可以自行去了解。

?

轉載于:https://www.cnblogs.com/zuichuyouren/p/11122674.html

總結

以上是生活随笔為你收集整理的非阻塞I/O多路复用机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。