nginx采用的多路复用epoll

什么是epoll模型?

是一个linux的内核模块,是新的比较高效的IO复用的内核模型,epoll模型就是用来实现IO复用的。

什么是IO复用?

如果一个线程只能处理一个i/o流,那么要处理多个i/o流就需要多个线程或多个进程,这样显然是不够高效的。 那么一个线程能处理多个i/o流的模式就是i/o复用模式。

i/o复用模式解决了并发的情况下i/o阻塞的问题,要尽量让你的程序是非阻塞的,这样会更通畅

写段伪代码来形像的说明一下什么是非阻塞模式
代码示例1:

while ture {
	for str in stream[] {
		if str has data
				read str
	}
}

这段代码是不停的循环去接收 i/o流,有效的解决了阻塞的问题,但是由于 不停的循环对CPU造成不小的压力

linux i/0内核模型种类

类型一、select模型、poll模型
类型二、epoll模型

这三种模型产生的顺序是 select -> poll -> epoll

select模型
代码示例2

while ture {
	select(streams[]) {
		if str has data
				read str
	}
}

与代码示例1相比,代码示例采用的是select()做为代理 ,只读取有数据的stream[], 提高了cpu的使用效率

epoll模型优势
优势一、解决select模型对于文件句柄FD的打开限制,select对单个进程的句柄找开限制是2048个,在大规模并发的场景下这个瓶颈还是特别明显的
优势二、采用callbak的回调机制优化模型效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值