epoll select poll區別,三分鐘看Netty(3) select poll VS epoll

 2023-10-08 阅读 26 评论 0

摘要:2019獨角獸企業重金招聘Python工程師標準>>> 前言 epoll select poll區別。上一節主要講述了BIO和NIO的區別。BIO每一步都是阻塞式的;NIO僅在select的時候阻塞,并且在獲取到IO權限后,可以同時操作多個IO。 在NIO的具體實現上,又有不同。

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

前言

epoll select poll區別。上一節主要講述了BIO和NIO的區別。BIO每一步都是阻塞式的;NIO僅在select的時候阻塞,并且在獲取到IO權限后,可以同時操作多個IO。

在NIO的具體實現上,又有不同。在linux上主要分為select ,poll,epoll。

簡單的背景介紹

php epoll、網絡IO本質上是對FD(文件描述符)的操作,用戶代碼需要先從操作系統獲取到FD,進而執行IO操作。上述將的幾種實現,主要體現在FD遍歷上的不同。

select poll 模式

poll是對select的一次改進,但是遍歷FD方式是一致的。

epoll詳解、在用戶調用selector.selectedKeys()的時候,操作系統掃描所有socket,從系統內核復制到用戶的內存。隨著連接數的增長,遍歷、復制的時間線性增長,并且消耗內存隨之增大。

epoll 模式

epoll的模式僅關心活躍的部分,減少遍歷和復制操作。

epoll wait?簡單總結

epoll模式給高連接數,高并發的程序帶來了性能的提高。

如何使用epoll

select編程?在Netty編程中,將select 切換成 epoll十分方便。

代碼上需要修改兩個地方: NioEventLoopGroup 替換成 EpollEventLoopGroup NioServerSocketChannel 替換成 EpollServerSocketChannel

這里需要引入的依賴:netty-transport-native-epoll 或者直接使用 netty-all。

參考: https://cloud.tencent.com/developer/article/1005481 http://colobu.com/2014/09/12/java-nio-epoll/

轉載于:https://my.oschina.net/u/992559/blog/1787817

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/130664.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息