免费注册 查看新帖 |

Chinaunix

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

[C] 非阻塞I/O [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-17 12:04 |只看该作者 |正序浏览
本帖最后由 飞得更高333 于 2011-08-17 20:00 编辑

最近在看《UNIX网络编程》看到了非阻塞I/O那一章,我看完感觉,这个非阻塞I/O是不是就是把套接字设置成非阻塞的选项,之后和select配合使用,就这个意思吧?



    非阻塞就是这样用的:设置一下文件选项,之后配合select。就这么简单吗?还有没有别的用法


论坛徽章:
0
15 [报告]
发表于 2011-08-23 17:16 |只看该作者
是的, 搂主说的"这个非阻塞I/O就是把套接字设置成非阻塞的选项"是正解

论坛徽章:
0
14 [报告]
发表于 2011-08-23 12:28 |只看该作者
select, pool, epoll叫IO信号.
aio才是异步IO.

1.  阻塞IO
  来来来, 给哥一段数据...
    少等...
   (12年后)
   给你啦

2.  非阻塞IO
  来来来, 给哥一段数据
   灭有

   来来来, 给哥一段数据
  灭有

  来来来, 给哥一段数据
  给你

3.  信号IO
   哎, 那个epool啊, 我跟那小子要一段数据, 他装备好告诉我一下, 我先睡觉了.
  (12年后)
  那小子准备好了...

  来来来, 把数据给哥.
  给...


4. 异步IO
   来来来, 给哥一段数据.
  哥, 你先忙, 等我给你弄好再通知你.
  (12年后)
  哥, 数据己经给你了, 请查收.

论坛徽章:
0
13 [报告]
发表于 2011-08-23 12:22 |只看该作者
回复 1# 飞得更高333


    个人理解,select, poll, epoll这些叫做异步IO(asynchronous IO)。非阻塞IO(non-blocking IO)是只读写fd的时候及时响应,不需要系统的buffer进行阻塞控制。

    ps: select不是一定要和非要阻塞IO配合使用,与阻塞的IO模型使用也很正常

论坛徽章:
0
12 [报告]
发表于 2011-08-22 17:54 |只看该作者
回复 9# inkcpp


    非常感谢{:3_193:}

论坛徽章:
0
11 [报告]
发表于 2011-08-21 15:29 |只看该作者
回复  飞得更高333


   阻塞模式   猜测: 把进程睡眠在等待IO中断信号...,  而select 可能是IO终端信 ...
0506010237 发表于 2011-08-21 14:13



    你应该去看一下实现,而不是在这里瞎猜。

论坛徽章:
0
10 [报告]
发表于 2011-08-21 14:13 |只看该作者
回复 1# 飞得更高333


   阻塞模式   猜测: 把进程睡眠在等待IO中断信号...,  而select 可能是IO终端信号+SIGALRM信号

论坛徽章:
0
9 [报告]
发表于 2011-08-20 10:08 |只看该作者

论坛徽章:
1
15-16赛季CBA联赛之四川
日期:2016-02-15 17:12:32
8 [报告]
发表于 2011-08-19 16:26 |只看该作者
select 也可以在阻塞的时候用啊 ,
感觉select像个自动机一样,当你睡觉的时候,有事件发生地时候它就提醒你,然后你就去看看是什么事,接着你再处理它。

论坛徽章:
2
天蝎座
日期:2014-03-28 10:18:052015年亚洲杯之乌兹别克斯坦
日期:2015-02-10 11:32:25
7 [报告]
发表于 2011-08-19 13:54 |只看该作者
也不一定要配合select工作,只是select的时候用非阻塞更好

PS:貌似我什么也没说{:3_186:}
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP