欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

IO多路復用到底是不是異步的呢

林雅南2年前15瀏覽0評論

IO多路復用到底是不是異步的呢?

IO多路復用是同步還是異步看你站在哪個角度看的,IO多路復用比較經典的模型有selector,poll,epoll!

IO多路復用的發展背景:一開始C/S的通信,通常是Client端發起一個請求,然后Server端起一個對應的線程(或者進程)來處理,各個請求之間并不影響,隨著用戶越來越多,并發量越來越大,server端創建的線程逐漸的把整個計算機內存全部占用,導致服務器卡死!

這個時候IO多路復用開始成為主流,因為其理念為使用一個線程不斷輪詢的監聽所有的連接,把活躍連接放入一個處理隊列(selector和epoll有所不同),使用任務線程進行處理,這個時候所有的連接線程使用一個線程代替,并發量提高了很多,例如基于使用epoll模型的nginx,并發量幾萬的時候占用的線程也不過才幾M!

回到題目本身,服務器在監聽事件的過程中,如果一直沒有請求,那么監聽的線程就是處于阻塞的,因為是使用的單線程監聽,也沒有異步的可能,但是在監聽到事件放入隊列之后,起多個線程分別去處理這個連接,這肯定又是異步的,所以IO多路復用嚴格上來說是同步監聽,異步處理的!

當然,IO多路復用并不是適用于所有的連接方式(長連接和短連接),如果是短連接,并且活躍事件比較多的情況下,使用IO多路復用,監聽線程會崩潰的,而改為使用基于線程池的多線程連接方式性能更好,如果是長連接的話,IO多路復用才能體現出極大的性能提升。

總的來說,IO多路復用在實際的開發中,用到的場景還是很多的,比如游戲開發,社交軟件等,也是很多對服務器要求很高的公司招聘時著重強調的,掌握netty框架還是很有必要的,源碼在github上有,可以下載來玩玩,更多的技術分享,敬請關注。。。

poll java,IO多路復用到底是不是異步的呢