同步IO,非同步IO,阻塞IO,非阻塞IO
這裡在呼叫recv前先呼叫select或者poll,這2個系統呼叫都可以在核心準備好資料(網路資料到達核心)時告知使用者程序,這個時候再呼叫recv一定是有資料的。因此這一過程中它是阻塞於select或poll,而沒有阻塞於recv,有人將非阻塞IO定義成在讀寫操作時沒有阻塞於系統呼叫的IO操作(不包括資料從核心複製到使用者空間時的阻塞,因為這相對於網路IO來說確實很短暫),如果按這樣理解,這種IO模型也能稱之為非阻塞IO模型,但是按POSIX來看,它也是同步IO,那麼也和樓上一樣稱之為同步非阻塞IO吧。
這種IO模型比較特別,分個段。因為它能同時監聽多個檔案描述符(fd)。這個時候C同學來裝水,發現有一排水龍頭,舍管阿姨告訴他這些水龍頭都還沒有水,等有水了告訴他。於是等啊等(select呼叫中),過了一會阿姨告訴他有水了,但不知道是哪個水龍頭有水,自己看吧。於是C同學一個個開啟,往杯子裡裝水(recv)。這裡再順便說說鼎鼎大名的epoll(高效能的代名詞啊),epoll也屬於IO複用模型,主要區別在於舍管阿姨會告訴C同學哪幾個水龍頭有水了,不需要一個個開啟看(當然還有其它區別)。
相關推薦
談IO中的阻塞和非阻塞,同步和非同步及三種IO模型
什麼是同步和非同步? 燒水,我們都是通過熱水壺來燒水的。在很久之前,科技還沒有這麼發達的時候,如果我們要燒水,需要把水壺放到火爐上,我們通過觀察水壺內的水的沸騰程度來判斷水有沒有燒開。隨著科技的發展,現在市面上的水壺都有了提醒功能,當我們把水壺插電
Linux下阻塞與非阻塞,同步與非同步的關係及IO模型
一、阻塞與非阻塞,同步與非同步的關係 1、同步 同步,就是在發出一個功能呼叫時,在沒有得到結果之前,該呼叫就不返回。也就是說事情必須一件一件地做,等前一件做完了才能做下一件事。 2、非同步 非同步,就是在發出一個功能呼叫時,呼叫者不會立刻得到結果。實際處理這個呼叫的部
IO模型淺析-阻塞、非阻塞、IO複用、訊號驅動、非同步、同步IO
segmentfault 對應博文頁面 https://segmentfault.com/a/1190000016359495 最近看到OVS使用者態的程式碼,在接收核心態資訊的時候,使用了Epoll多路複用機制,對其十分不解,於是從網上找了一些資料,學習了一下《UNIX網路變成卷1:套接字聯網API》這本書
【Socket程式設計】篇五之IO同步、非同步、阻塞、非阻塞
參考Richard Stevens的“UNIX® Network Programming Volume 1, Third Edition: The Sockets Networking ”,6.2
簡述linux同步與非同步、阻塞與非阻塞概念以及五種IO模型
1、概念剖析 相信很多從事linux後臺開發工作的都接觸過同步&非同步、阻塞&非阻塞這樣的概念,也相信都曾經產生過誤解,比如認為同步就是阻塞、非同步就是非阻塞,下面我們先剖析下這幾個概念分別是什麼含義。 同步:所謂同步,就是在發出一個功能呼叫時,在沒有得到結果之前,該呼叫就不返回。也就是必
同步、非同步、阻塞、非阻塞,以及IO模型的理解
同步和非同步 同步 就是你知道你什麼時候在做什麼,做完一件事情再做下一件事情,因此主動權在自己手裡。比如通過等待或輪詢,你在某個時間點總是知道結果是怎樣的(有資料還是沒資料等)。 非同步 就是你不知道什麼時候會發生什麼。比如你註冊了多個回撥函式,你不知道什
網路程式設計io總結區分。阻塞,非阻塞,非同步,同步
借鑑提煉自http://blog.csdn.net/historyasamirror/article/details/5778378 在網路程式設計中,肯定會有讀寫io的問題。這時候就會有了五種io模型。取自unix network programing 五種模型分別是,
網路IO之阻塞、非阻塞、同步、非同步總結
1、前言 在網路程式設計中,阻塞、非阻塞、同步、非同步經常被提到。unix網路程式設計第一卷第六章專門討論五種不同的IO模型,Stevens講的非常詳細,我記得去年看第一遍時候,似懂非懂,沒有深入理解。網上有詳細的分析:http://blog.csdn.net/historyasamirror/arti
IO模型:同步與非同步,阻塞與非阻塞
Unix下的IO可以區分為5種I/O模型: 阻塞式I/O非阻塞式I/OI/O複用(select和poll)訊號驅動式I/O(SIGIO)非同步I/O Unix下一個輸入操作可分為兩個步驟: 等待資料準備好從核心向程序複製資料 對於一個網路I/O的輸入操作也是一樣:
關於網路IO中的同步、非同步、阻塞、非阻塞
在高併發程式設計當中,我們經常會遇到一些非同步、非阻塞等一些概念,一些常用的技術比如非同步的httpclient、netty nio、nginx、node.js等,它們的原理大都跟非同步、非阻塞有關。特別是在伺服器開發中,併發的請求處理是個大問題,阻塞式的函式會
阻塞和非阻塞,同步和非同步IO及IO多路複用
阻塞和非阻塞,同步和非同步 1 例子 故事:老王燒開水。 出場人物:老張,水壺兩把(普通水壺,簡稱水壺;會響的水壺,簡稱響水壺)。 老王想了想,有好幾種等待方式 1.老王用水壺煮水,並且站在那裡,不管水開沒開,每隔一定時間看看水開了沒。-同步阻塞
阻塞、非阻塞與同步、非同步IO的區別
轉自知乎的某條評論……@愚抄 今天看文章發現評論中有人把IO的幾個概念講的通俗易懂,拿來和大家分享一下: 關鍵詞 阻塞同步IO 阻塞非同步IO 非阻塞同步IO 非阻塞非同步IO 段子如下: 老張愛喝茶,廢話不說,煮開水。 出場人物:老張,水壺
IO-同步、非同步、阻塞、非阻塞
1.同步與非同步 所謂同步就是一個任務的完成需要依賴另外一個任務時,只有等待被依賴的任務完成後,依賴的任務才有可能完成(當然我們可以根據事務回滾、資料恢復等使之成為一種可靠的任務序列:要成功都成功,要失敗都失敗,兩個任務的狀態保持一致);非同步不需要等待被依賴的任務完成,只
IO:阻塞、非阻塞、同步、非同步
Network I/O:阻塞(blocking)、非阻塞(nonblocking)、同步(synchronous)、非同步(asynchronous)I/O涉及到兩個系統物件:(1)呼叫I/O的proc
阻塞和非阻塞、同步和非同步 、五種IO模型
阻塞和非阻塞,同步和非同步1 例子故事:老王燒開水。出場人物:老張,水壺兩把(普通水壺,簡稱水壺;會響的水壺,簡稱響水壺)。老王想了想,有好幾種等待方式1.老王用水壺煮水,並且站在那裡,不管水開沒開,每隔一定時間看看水開了沒。-同步阻塞老王想了想,這種方法不夠聰明。2.老王還
一段話系列-Linux中IO的同步、非同步、阻塞、非阻塞
首先我們框定一下背景,我們探討的是Linux系統下的IO模型。 同步和非同步是針對核心操作資料而言的,同步是指核心序列順序操作資
NIO學習筆記,從Linux IO演化模型到Netty—— 究竟如何理解同步、非同步、阻塞、非阻塞
我的觀點 首先,分開各自理解。 1. 同步:描述兩個(或者多個)個體之間的協調關係。 比如,單執行緒中,methodA呼叫了methodB,methodB返回後,methodA才往下執行,那麼稱A同步呼叫了B。 比如,多執行緒中,執行緒1訪問完某個資源,才到執行緒2訪問。 同步在一定的 互斥基礎上,強調的是有
一文讀懂阻塞、非阻塞、同步、異步IO
UC max register class 掃描 基本 角度 cloud 問題: 介紹 在談及網絡IO的時候總避不開阻塞、非阻塞、同步、異步、IO多路復用、select、poll、epoll等這幾個詞語。在面試的時候也會被經常問到這幾個的區別。本文就來講一下這幾個詞
談IO中的阻塞和非阻塞,同步和異步及三種IO模型
狀態 阻塞io 舉例 最大的 data- str 被調用 當我 返回 什麽是同步和異步? 燒水,我們都是通過熱水壺來燒水的。在很久之前,科技還沒有這麽發達的時候,如果我們要燒水,需要把水壺放到火爐上,我們通過觀察水壺內的水的沸騰程度來判斷水有沒有燒開。隨著科
看看八年前的(阻塞、非阻塞、多路複用、訊號驅動、非同步)IO總結
尊重原創,來自八年前的IO總結https://blog.csdn.net/historyasamirror/article/details/4270633 阻塞IO: 執行過程 使用者請求資料,系統核心(kernel)開始準備資料,使用者程序被阻塞