bio (blocking i/o):同步阻塞i/o模式。
nio (new i/o):同步非阻塞模式。
aio (asynchronous i/o):非同步非阻塞i/o模型。
先看阻塞和非阻塞的區別,以燒水為例:
阻塞vs非阻塞:人是否坐在水壺前面一直等。
同步vs非同步:水壺是不是在水燒開之後主動通知人。
再加上同步、非同步,有如下三種情況:
1.同步阻塞模式:我們的工作模式是先來到廚房,開始燒水,並坐在水壺面前一直等著水燒開。
2.同步非阻塞模式:我們的工作模式是先來到廚房,開始燒水,但是我們不一直坐在水壺前面等,而是回到客廳看電視,然後每隔1分鐘左右到廚房看一下水有沒有燒開。
3.非同步非阻塞i/o模型:我們的工作模式是先來到廚房,開始燒水,我們不一直坐在水壺前面等水燒開,也不隔一段時間去看一下,而是在客廳看電視,水壺上面有個開關,水燒開之後他會通知我。
由此,如果水很快燒開,比如只用1秒鐘,那麼第1種模式,就非常簡單和快速了,一氣呵成。
如果水需要1分鐘左右燒開,那麼第1種就需要一直守著水壺,期間無法做其他的事,第2種模式就比第一種輕鬆。
如果水需要10分鐘燒開,那麼第1種就非常不輕鬆了,第二種就需要來回檢查水是否燒開了,來回次數比較多,而且可能已經燒開了,但卻不知道,存在溢位的可能。
第三種此值就很方便了,不需要多次往返檢查,只需要接收水壺發出的通知,效率大大的提高了。
用形象的比喻學程式設計
為什麼c 指標不安全 比喻 假設你是乙個殺手,上級要你去槍斃乙個人,c 的引用的方法是 找到人,姓名,位址,性別都對頭後開槍,而c 的指標則是按照身份證號碼,正常情況下,按照身份證號碼的方法很快很方便,可是萬一目標的身份證被別人 拿去了那麼你將殺錯了乙個好人啊!比喻 我們把windows比做乙個遊樂...
各種流行演算法的形象比喻
對於一些名字聽起來比較玄幻的演算法,我在乙個qq群裡看到如下解釋,覺得挺形象的,貼出來分享一下 這些演算法都有什麼含義?首先給出個區域性搜尋,模擬退火,遺傳演算法,禁忌搜尋的形象比喻 為了找出地球上最高的山,一群有志氣的兔子們開始想辦法。1 兔子朝著比現在高的地方跳去。他們找到了不遠處的最高山峰。但...
程序和執行緒的形象比喻
程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一篇材料,發現有乙個很好的模擬,可以把它們解釋地清晰易懂。1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就...