Chinaunix

标题: 非阻塞I/O [打印本页]

作者: 飞得更高333    时间: 2011-08-17 12:04
标题: 非阻塞I/O
本帖最后由 飞得更高333 于 2011-08-17 20:00 编辑

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



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


[qq]907299935[/qq]
作者: int-main    时间: 2011-08-17 12:26
个人理解的非阻塞笼统点说就是直接对收发的缓冲区负责,有或没有,成或不成。
相对来说阻塞就是 可能包含了非阻塞的一些工作,而系统帮你守候收发,并反馈你结果。

不知道这样理解对不对
作者: zylthinking    时间: 2011-08-17 12:31
最近在看《UNIX网络编程》看到了非阻塞I/O那一章,我看完感觉,这个非阻塞I/O是不是就是把套接字设置成非阻 ...
飞得更高333 发表于 2011-08-17 12:04


至少这是一种用法
作者: zcheung    时间: 2011-08-17 17:34
IO是IO
Socket是Socket
兩個是不一樣的東西
作者: int-main    时间: 2011-08-17 17:44
IO是IO
Socket是Socket
兩個是不一樣的東西
zcheung 发表于 2011-08-17 17:34



   
无伤大雅,再怎么说socket也是IO的一种方式。
作者: 飞得更高333    时间: 2011-08-17 20:00
回复 5# int-main


    非阻塞就是这样用的:设置一下文件选项,之后配合select。就这么简单吗?还有没有别的用法
作者: txdgtwpv    时间: 2011-08-19 13:54
也不一定要配合select工作,只是select的时候用非阻塞更好

PS:貌似我什么也没说{:3_186:}
作者: wujiajia    时间: 2011-08-19 16:26
select 也可以在阻塞的时候用啊 ,
感觉select像个自动机一样,当你睡觉的时候,有事件发生地时候它就提醒你,然后你就去看看是什么事,接着你再处理它。
作者: inkcpp    时间: 2011-08-20 10:08
http://www.ibm.com/developerworks/cn/linux/l-async/
推荐一篇异步IO文章
作者: 0506010237    时间: 2011-08-21 14:13
回复 1# 飞得更高333


   阻塞模式   猜测: 把进程睡眠在等待IO中断信号...,  而select 可能是IO终端信号+SIGALRM信号
作者: 鸡丝拌面    时间: 2011-08-21 15:29
回复  飞得更高333


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



    你应该去看一下实现,而不是在这里瞎猜。
作者: 飞得更高333    时间: 2011-08-22 17:54
回复 9# inkcpp


    非常感谢{:3_193:}
作者: wtomy    时间: 2011-08-23 12:22
回复 1# 飞得更高333


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

    ps: select不是一定要和非要阻塞IO配合使用,与阻塞的IO模型使用也很正常
作者: gtkmm    时间: 2011-08-23 12:28
select, pool, epoll叫IO信号.
aio才是异步IO.

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

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

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

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

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

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


4. 异步IO
   来来来, 给哥一段数据.
  哥, 你先忙, 等我给你弄好再通知你.
  (12年后)
  哥, 数据己经给你了, 请查收.
作者: youshuang    时间: 2011-08-23 17:16
是的, 搂主说的"这个非阻塞I/O就是把套接字设置成非阻塞的选项"是正解




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2