免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2422 | 回复: 4
打印 上一主题 下一主题

不是太理解非阻塞IO [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-29 17:32 |只看该作者 |倒序浏览
就拿网络通信中的send和recv来说吧,比如我需要处理接收到的数据,对一个套接字调用一个recv,如果套接字是非阻塞的,recv会立即返回,等数据到来时候是如何得到数据的那?也是放在传给recv的缓冲区里面放着的吗?如果我在recv下面又用到了这个缓冲区该怎么办?
在windows下的完成端口是通过GetQueuedCompletionStatus获得接收到的数据的,epoll和iocp应该差不多吧,不知道如果吧epoll中的套接字也设置成非阻塞的怎么得到接收到的数据,是通过回调还是怎么?
谢谢

论坛徽章:
0
2 [报告]
发表于 2008-07-29 17:34 |只看该作者
原帖由 yang_crystal 于 2008-7-29 17:32 发表
就拿网络通信中的send和recv来说吧,比如我需要处理接收到的数据,对一个套接字调用一个recv,如果套接字是非阻塞的,recv会立即返回,等数据到来时候是如何得到数据的那?也是放在传给recv的缓冲区里面放着的吗 ...


不是
反复调用 直到有数据为止
这就是非阻塞io

论坛徽章:
0
3 [报告]
发表于 2008-07-29 17:47 |只看该作者

回复 #2 blizzard213 的帖子

要是一直没有数据都一直调用啊?
要是这样感觉还没有阻塞的效率高了,关键是你也不知道什么时候有数据啦

论坛徽章:
0
4 [报告]
发表于 2008-07-29 17:50 |只看该作者
原帖由 yang_crystal 于 2008-7-29 17:47 发表
要是一直没有数据都一直调用啊?
要是这样感觉还没有阻塞的效率高了,关键是你也不知道什么时候有数据啦


那你就用异步io

论坛徽章:
0
5 [报告]
发表于 2008-07-29 17:54 |只看该作者
什么时候有数据有select之类的函数进行通知.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP