后台开发阻塞IO和非阻塞IO的问题

     请教一下各位大佬,非阻塞IO跟阻塞IO相比
非阻塞IO在数据没准备好的时候,也是一直轮询查看数据是否准备好,发现数据准备好后再继续执行。
     而阻塞IO也是数据准备好后再执行,这样的话非阻塞IO跟阻塞IO相比不就没什么优势了吗?为什么还需要用非阻塞IO(除了epoll的时候个人感觉有必要)

      希望有大佬愿意给我这个菜鸡解惑,感激!

#C++工程师#
全部评论
如果使用非阻塞io配合轮询的话,效果很差,并且会cpu占用率会很高,并且不能把cpu释放出去做别的事情。一般情况下是非阻塞io配合 epoll等功能,将io转化为事件,由epoll统一进行通知分发,而不会用轮询的方式。
点赞 回复 分享
发布于 2018-01-22 21:14
阻塞是只有读取了 才返回 非阻塞是不管读取不读取 都返回。 非阻塞的性能更好。(不用读取到指定数据才返回,不用一直等着。简单来说:在多线程环境下,不会一个请求占着一个线程,以此能支持更多的请求)
点赞 回复 分享
发布于 2018-01-22 21:08
nio一个线程就能处理数据是否准备好,分发给处理线程,bio则不能
点赞 回复 分享
发布于 2018-01-22 20:59

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务