netty学习笔记01——IO多路复用模型

netty学习笔记01——IO多路复用模型

阻塞I/O模型

阻塞i/o模型就是常见的io模型,请看如下的一个例子:

server = new ServerSocket(port);
server.accept();

上述的代码会被阻塞在server.accept(),因为服务器在监听访问端口的请求,直到有访问到来,这个进程才继续进行。如果同时有大量的请求来访问服务器,后一个请求必须等前一个请求完成才能进行处理,这会造成服务器的效率极低。
一个解决办法是每当一个请求来临,都创建新的线程来处理,主线程继续监听服务器端口。这种办法导致创建和销毁线程的开销非常大。解决办法是使用线程池和队列。有些问题依旧没有得到解决,当网络传输较慢的时候,读取输入流的一方线程也将会被同步阻塞60s。在此期间,其他输入消息只能在消息队列中排队。
关于这个问题的解决放在下一篇文章中讨论,本节继续阐述阻塞i/o。

阻塞i/o模型在进程空间调用recvfrom,它的系统调用直到数据包到达且被复制到应用进程的缓冲区中或者发生错误时才返回,在此期间一直会等待,进程在从调用recvfrom开始到它返回的整段时间内都是被阻塞的,因此被称为阻塞i/o模型。——《netty权威指南》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值