<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      也談阻塞、非阻塞、同步、異步

      最近在招聘中,聊到基礎的網絡編程的時候,發現不少人對BIO、NIO、AIO等理解非常模糊,覺得有必要寫文章來糾正下很多人的誤解。 
      在談這些之前,非常有必要先介紹下Unix 5種IO模型: 
      阻塞: 
      阻塞是最常用的IO模型,默認情況下所有的文件操作都是阻塞的。以套接字編程為例。在進程空間中調用recvfrom,其系統調用直到數據報文到達且被拷貝到應用程序進程的緩存區(或者發生錯誤)后才返回,期間一直在等待。進程在從調用recvfrom開始到它返回的整段時間內是被阻塞的。有一張很經典的圖: 
       
      非阻塞: 
      調用recvfrom從應用層到內核的過程中,如果該緩沖區沒有數據的話,則直接返回一個EWOULDBLOCK的錯誤,一般會輪詢的進行檢查狀態,看內核空間有沒有數據來。直到有數據,最后完成拷貝。如下圖: 
       
      IO多路復用: 
      Linux系統提供的select/poll/epoll,進程將一個或者多個FD(文件描述符)傳遞給一個或者多個poll/select系統調用,阻塞在select。select和poll可以幫助偵聽很多的FD是否準備就緒。但是,select和poll是順序掃描去檢查FD的就緒狀態,效率比較低,而且支持的FD數量有限(沒記錯的話,默認好像是1024還是2048,具體記不清)。而epoll是通過事件驅動的方式,當有FD準備就緒的時候,立即回調函數rollback。如圖: 
       
      談到epoll,不得不提一個經典的問題,apache和nginx的對比,為什么nginx比apache效率高很多,這就是根本的原因。 
      信號驅動: 
      這種模型在實際應用的非常少,這里不做過多介紹,可以看圖: 
       
      異步: 
      告知內核啟動某個操作,并讓內核在整個操作完成后(包括將數據從內核空間拷貝到自己的緩沖區)通知。異步IO的主要特點是完成操作后主動通知。如圖: 

      好,上面的可能有點抽象。下面用通俗點的語言來總結一下阻塞,非阻塞,同步,異步。
      阻塞,非阻塞:進程/線程要訪問的數據是否就緒,進程/線程是否需要等待; 
      同步,異步:訪問數據的方式,同步需要主動讀寫數據,在讀寫數據的過程中還是會阻塞; 
      異步只需要I/O操作完成的通知,并不主動讀寫數據,由操作系統內核完成數據的讀寫。 
      再舉個網上流傳的,非常容易理解的例子: 
      老張愛喝茶,廢話不說,煮開水。 
      出場人物:老張,水壺兩把(普通水壺,簡稱水壺;會響的水壺,簡稱響水壺)。 
      1 老張把水壺放到火上,立等水開。(同步阻塞)老張覺得自己有點傻 
      2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。(同步非阻塞) 
      老張還是覺得自己有點傻,于是變高端了,買了把會響笛的那種水壺。水開之后,能大聲發出嘀~~~~的噪音。 
      3 老張把響水壺放到火上,立等水開。(異步阻塞)老張覺得這樣傻等意義不大 
      4 老張把響水壺放到火上,去客廳看電視,水壺響之前不再去看它了,響了再去拿壺。(異步非阻塞)老張覺得自己聰明了。 
      所謂同步異步,只是對于水壺而言。普通水壺,同步;響水壺,異步。雖然都能干活,但響水壺可以在自己完工之后,提示老張水開了。這是普通水壺所不能及的。 
      同步只能讓調用者去輪詢自己(情況2中),造成老張效率的低下。所謂阻塞非阻塞,僅僅對于老張而言。立等的老張, 
      阻塞;看電視的老張,非阻塞。情況1和情況3中老張就是阻塞的,媳婦喊他都不知道。 
      雖然3中響水壺是異步的,可對于立等的老張沒有太大的意義。所以一般異步是配合非阻塞使用的,這樣才能發揮異步的效用。

       

      posted @ 2016-01-05 14:19  丁碼農  閱讀(1643)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 日韩一本不卡一区二区三区| 欧美性xxxxx极品| 久久精品国内一区二区三区| www夜片内射视频日韩精品成人| 国产精品不卡一区二区久久| 福利一区二区1000| 中文字幕国产精品资源| 狠狠躁天天躁中文字幕无码| 狠狠干| 午夜福利偷拍国语对白| 亚洲美免无码中文字幕在线 | 风韵丰满熟妇啪啪区老熟熟女 | 日本黄页网站免费观看| 国产亚洲精品自在久久蜜TV| 丰顺县| 亚洲av综合色区在线观看| 日韩精品人妻av一区二区三区| 精品综合久久久久久98| 日韩在线观看 一区二区| 久久99国产精品尤物| 亚洲啪啪精品一区二区的| 韩国三级+mp4| 超清无码一区二区三区| 人妻丝袜无码专区视频网站| 国产成人无码久久久精品一| 亚洲成人av一区二区| 国产午夜精品福利91| 午夜家庭影院| 少妇粗大进出白浆嘿嘿视频| 日韩人妻无码一区二区三区| 熟妇人妻无码中文字幕老熟妇| 一区二区中文字幕av| 又大又硬又爽免费视频| 九九热免费在线视频观看| 久久丫精品久久丫| 国产成人AV大片大片在线播放| 人人妻人人做人人爽夜欢视频| 激情综合色五月丁香六月亚洲| 日韩黄色av一区二区三区| 国内不卡的一区二区三区| 无码AV中文字幕久久专区|