NIO-epoll理解

NIO-epoll理解

IO

本质上由IO-NIO/多路复用,是为了减少系统调用的阻塞

BIO

socket通信,bio会阻塞等待server输入,可以创建每接收一个输入新建线程执行(传统方式)
jps查看java进程
netstat -natp查看socket
缺点:线程太多,原因:阻塞

NIO

serverSocketChannel.configureBlocking(false) 手动配置非阻塞
原本阻塞的方法不会阻塞,会立刻返回(-1或者null)

  1. 通道循环轮询内核查看是否有新增任务(service或client)(可阻塞式等待) 弊端,反复遍历内核 (select,poll)
  2. epoll_create内核开辟空间,红黑树存储,存贮新增的任务,文件描述符表示此表,epoll_ctl,将连接加入表中,1,fd3(9090), 2,fd5(client),epoll_wait(第一次加入server-fd3,后续取空间对应的链表里的连接,处理)
    例子 epoll_ctl(5, EPOLL_CTL_ADD, 6,{EPOLLIN,{u32=6, u64=6}}) = 0 ,5是空间,6是server
    epoll_wait(5, {}, 10128, 100) = 0,redis单线程,超时100,循环处理,nginx是阻塞式等待连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值