为什么read设置不了非阻塞

为什么read设置不了非阻塞,第1张

原因如下:

1、调用read的时候,实际上调用的是socketchannel的read方法,而设置的阻塞模式是ServerSocketChannel的模式,所以调用read时依然会采用默认的阻塞方式。

2、默认情况下,read的方法是阻塞模式的,没有办法设置超时时间,出现客户端异常退出,当前的连接将永远等待下去。

非阻塞方式通常使用轮询来实现延迟。轮询就是在每次循环中检查I/O是否就绪,如果就绪,就执行相应的 *** 作,如果不可用,就继续轮询。可以通过设置轮询的时间间隔来调整延迟的大小。另外,也可以使用多线程来实现,让线程1在每次循环中检查I/O是否就绪,如果不就绪,就让线程2睡眠一段固定的时间,然后再重新检查I/O。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7794711.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存