加入收藏 | 设为首页 | 会员中心 | 我要投稿 漯河站长网 (https://www.0395zz.cn/)- 云服务器、混合云存储、网络、内容创作、云渲染!
当前位置: 首页 > 站长资讯 > 评论 > 正文

同步非阻塞模式NIO

发布时间:2021-03-12 12:25:40 所属栏目:评论 来源:互联网
导读:步非阻塞模式(NonBlocking IO) 在非阻塞模式中,发出Socket的accept()和read()操作时,如果内核中的数据还没有准备好,那么它并不会阻塞用户进程,而是立刻返回一个信息。也就是说进程发起一个read操作后,并不需要一直阻塞等待,而是马上就得到了一个结果。

步非阻塞模式(NonBlocking IO)

在非阻塞模式中,发出Socket的accept()和read()操作时,如果内核中的数据还没有准备好,那么它并不会阻塞用户进程,而是立刻返回一个信息。也就是说进程发起一个read操作后,并不需要一直阻塞等待,而是马上就得到了一个结果。

如果结果发现数据准备完毕就可以读取数据,然后拷贝到用户内存。如果结果发现数据没有就绪也会返回,进程继续不断的主动询问数据的准备情况是非阻塞模式的一个特点。
 

a同步非阻塞模式

如上所述,Java的Socket是阻塞模式的典型应用。在发起accpet()和read()请求之后会持续阻塞,但是Java中提供了setSoTimeout()方法设置超时时间,在固定时间内没有得到结果,就会结束本次阻塞,等待进行下一次的阻塞轮训。这是,也就实现了应用层面的非阻塞。

Java中Socket中的setSoTimeout()方法:
 

步非阻塞模式总结

用户需要不断地调用,尝试读取数据,直到读取成功后,才继续处理接收的数据。整个IO请求的过程中,虽然用户线程每次发起IO请求后可以立即返回,但是为了等到数据,仍需要不断地轮询、重复请求,消耗了大量的CPU的资源。一般很少直接使用这种模型,而是在其他IO模型中使用非阻塞IO这一特性。

开发难度相对于阻塞IO模式较难,适合并发小且不需要及时响应的网络应用开发。

(编辑:漯河站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读