NIO底层原理-epoll

BIO模型存在三个socket:

ServerSocket:专门用来监听是否有来自客户端的连接
accept返回的Socket:专门用于处理客户端请求的socket
Socket:客户端的socket

BIO由于accpet和read会阻塞,如果不使用多线程,read时候的阻塞会导致无法立即处理下一个客户端的连接。

如果使用多线程,如果某些线程不活跃,可能浪费CPU资源。

NIO可以设置通过configureBlocking设置accept为非阻塞的,对应操作系统五种IO模型介绍中的非阻塞IO模型。

NIO在感知各个连接的读写状态是通过操作系统内核轮询实现的。对应操作系统五种IO模型介绍中的多路复用IO模型。

在linux中,性能会更高一些,linux内核通过内核函数epoll实现被动感知,能有效解决多个连接不活跃的问题。

epoll的原理:

epoll原理详解及epoll反应堆模型_青萍之末的博客-CSDN博客

Epoll原理解析_ LINUX -CSDN博客

彻底搞懂epoll高效运行的原理

(就这样水了一篇博客)

原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/nio%e5%ba%95%e5%b1%82%e5%8e%9f%e7%90%86-epoll/

(0)
彭晨涛彭晨涛管理者
上一篇 2020年2月12日
下一篇 2020年2月13日

相关推荐

发表回复

登录后才能评论