免费注册 查看新帖 |

Chinaunix

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

[C] socket堵塞方式和非堵塞方式的区分? [复制链接]

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-22 15:13 |只看该作者 |倒序浏览
我在网上找到了对这二者的对比:
堵塞socket 就是在accept、read、write等IO操作的的时候,如果没有可用符合条件的资源,不马上返回,一直等待直到有资源为止。

非堵塞socket 则是在执行select的时候,当没有资源的时候堵塞,当有符合资源的时候,返回一个信号,然后程序就可以执行accept、read、write等操作,这个时候,这些操作是马上完成,并且马上返回。


堵塞方式和非堵塞方式是否还有其他区别,以及二者各自的好处。我了解不多,先抛砖引玉,请大家补充。

论坛徽章:
0
2 [报告]
发表于 2008-08-22 15:15 |只看该作者
SELECT已经过去

论坛徽章:
0
3 [报告]
发表于 2008-08-22 15:16 |只看该作者
阻塞可能是线程停滞在那。。。但是返回值总是想要的

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
4 [报告]
发表于 2008-08-22 15:17 |只看该作者
原帖由 @sky 于 2008-8-22 15:15 发表
SELECT已经过去


能否较详细说明一下?我认为unix中的poll和select基本是等同的吧

论坛徽章:
0
5 [报告]
发表于 2008-08-22 15:18 |只看该作者
原帖由 happy_fish100 于 2008-8-22 15:17 发表


能否较详细说明一下?我认为unix中的poll和select基本是等同的吧



大并发用EPOLL

论坛徽章:
0
6 [报告]
发表于 2008-08-22 15:20 |只看该作者
参考UNP相关章节

论坛徽章:
0
7 [报告]
发表于 2008-08-22 15:25 |只看该作者
一直对blocking/与synchronous,nonblocking与asynchronous I/O的概念模糊不清,搞不清它们之间的区别,到底阻塞和同步有什么区别呢?今天终于明白了,虽然是迟了点



拿socket 举例,当read数据时,如果这时没有数据可读,阻塞I/O会一直等待有数据读,数据从kernel copy 到socket的buffer后返回;非阻塞I/O会立即返回,但如果有数据可读,非阻塞I/O也是等数据从kernel copy 到socket的buffer后返回。



以上是阻塞与非阻塞I/O的区别,但都可以这个read操作是同步的,是不是很奇怪?点解称其为同步?看看同步的定义就会很明确:

    *

      A synchronous I/O operation causes the requesting process to be blocked until that I/O operation completes.
    *

      An asynchronous I/O operation does not cause the requesting process to be blocked.


http://blog.csdn.net/kay_zlc/archive/2005/01/10/247364.aspx

现在举一个异步的例子就会很明白了,也是对read这个操作,当有数据可读时,异步I/O立即返回,kernel copy数据到socket buffer后,会以事件等通知程序read操作完成。



关键就在于将数据从kernel copy到socket buffer这段时期,read操作是否阻塞,阻塞I/O是阻塞的,而异步I/O是不阻塞的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP