linux5种网络IO模型

看网上书上的各种解释太绕口难理解了,看到个例子挺好的。

女儿去外地工作,不弄经常回来,父女俩通过信件进行沟通

1.阻塞IO

daughter走之后,father一直在小区收发室等信。

2.非阻塞IO

father过一会来看一次,看看信到了没有(效率不高,吞吐量可能会降低)

3.IO复用

收发室改造系统,father向小区注册,之后会在家添加一个提醒装置,有信到达的时候就会提醒

4.信号驱动IO

但是还是免不了去取信读信回信等操作,只要住户告诉小区物业具体的操作,小区物业就会按照步骤去做。

5.异步IO

小区自动回信,将回信结果告诉住户。

java nio->select/poll方式 -> epoll方式

Linux对所有的外部设备都看做是一个文件,对一个文件的读写操作会调用系统的命令,返回一个file description(fd)

进程将一个多个fd转的哥select/poll,这样select/poll可以侦测多个fd,select/poll采用轮训的方式,并且fd的支持数量有限,收到了一些约束。 -> epoll 基于事件的驱动方式代替扫描,因此性能更高。

java旧版本采用select/poll(1.4-1.5),后续采用epoll(>1.5)

猜你喜欢

转载自shifulong.iteye.com/blog/2255486