日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

無法連接到internet怎么解決 無法連接到internet( 四 )


為了破這個(gè)局,程序員在用戶態(tài)通過多線程來防止主線程卡死 。
后來操作系統(tǒng)發(fā)現(xiàn)這個(gè)需求比較大,于是在操作系統(tǒng)層面提供了非阻塞的 read 函數(shù),這樣程序員就可以在一個(gè)線程內(nèi)完成多個(gè)文件描述符的讀取,這就是 非阻塞 IO 。
但多個(gè)文件描述符的讀取就需要遍歷,當(dāng)高并發(fā)場景越來越多時(shí),用戶態(tài)遍歷的文件描述符也越來越多,相當(dāng)于在 while 循環(huán)里進(jìn)行了越來越多的系統(tǒng)調(diào)用 。
后來操作系統(tǒng)又發(fā)現(xiàn)這個(gè)場景需求量較大,于是又在操作系統(tǒng)層面提供了這樣的遍歷文件描述符的機(jī)制,這就是 IO 多路復(fù)用 。
多路復(fù)用有三個(gè)函數(shù),最開始是 select,然后又發(fā)明了 poll 解決了 select 文件描述符的限制,然后又發(fā)明了 epoll 解決 select 的三個(gè)不足 。
所以,IO 模型的演進(jìn),其實(shí)就是時(shí)代的變化,倒逼著操作系統(tǒng)將更多的功能加到自己的內(nèi)核而已 。
如果你建立了這樣的思維,很容易發(fā)現(xiàn)網(wǎng)上的一些錯(cuò)誤 。
比如好多文章說,多路復(fù)用之所以效率高,是因?yàn)橛靡粋€(gè)線程就可以監(jiān)控多個(gè)文件描述符 。
這顯然是知其然而不知其所以然,多路復(fù)用產(chǎn)生的效果,完全可以由用戶態(tài)去遍歷文件描述符并調(diào)用其非阻塞的 read 函數(shù)實(shí)現(xiàn) 。而多路復(fù)用快的原因在于,操作系統(tǒng)提供了這樣的系統(tǒng)調(diào)用,使得原來的 while 循環(huán)里多次系統(tǒng)調(diào)用,變成了一次系統(tǒng)調(diào)用 + 內(nèi)核層遍歷這些文件描述符 。
就好比我們平時(shí)寫業(yè)務(wù)代碼,把原來 while 循環(huán)里調(diào) http 接口進(jìn)行批量,改成了讓對(duì)方提供一個(gè)批量添加的 http 接口,然后我們一次 rpc 請(qǐng)求就完成了批量添加 。
一個(gè)道理 。
找時(shí)間我再專門寫一篇,講講這塊網(wǎng)絡(luò)上魚龍混雜的花式錯(cuò)誤理解 。
(今完)

推薦閱讀