目录
NIO Non-Blocking I/O 即同步非阻塞I/O
I/O:Input和Output
BIO Blocking I/O 即同步阻塞I/O
应用程序发起read调用后,一直会阻塞,直到系统内核将数据拷贝给应用程序。
缺点:一直阻塞,不能应对高并发场景。
NIO Non-Blocking I/O 即同步非阻塞I/O
应用程序会一直发起read调用,一直到系统内核将数据拷贝给应用程序。
缺点:在内核拷贝数据到应用程序之前,依旧是阻塞的,而且多次发起read调用会占用CPU资源。
I/O多路复用
多路复用 通过一个选择器实现一个线程可以管理多个客户端,只有数据到达之后才会为其服务,每个客户端-内核之间相当于NIO模型
信号驱动I/O
主要依靠信号驱动,应用程序发送信号直接返回,不阻塞,内核准备好数据之后发送信号,应用程序再来读取数据,读取数据过程中还是阻塞的。
AIO Asynchronous I/O 异步I/O
应用程序发起read调用,会直接返回,去执行其他操作,等待内核准备好数据,直接回调应用程序的方法将数据交给应用程序。
总结(吃火锅)
看到一个例子结合自己理解分享给大家
场景:A、B、C、D、E、F、G去火锅店吃火锅,需要等位,他们都需要取号。
BIO:A取上号一直在等,直到排队到号,才吃上火锅。
NIO:B取上号就在周围逛,过一会来看一下到没到号,直到到号才吃上火锅。
多路复用:有一个跑腿,在同时帮助C、D、E去看一下有没有到号,假如D到号了,D去吃火锅,并且这个选择器在D吃火锅期间,都是在为D服务的,跑腿是专业的。
信号驱动I/O: F给店长打个电话,帮F取号,等到号了,店长给F打电话,你可以来吃火锅了。
AIO:G取上号,店长说你是至尊VIP,你留个地址,这边做好给你送过去,G就去干其他的事情,后面做好直接送到预留的地址。
还是你至尊黄红蓝黑红铂星VIP最舒服了!
标签:吃火锅,NIO,read,模型,阻塞,应用程序,内核,火锅店 From: https://blog.csdn.net/weixin_45967584/article/details/137086508