网络IPC非阻塞和异步I/O
通常,recv函数没有数据可用时会阻塞等待。同样地。当套接字输出队列没有祖公空间用来发送消息时,函数send会阻塞。在套接字非阻塞模式下,行为会改变。这种情况下,这些函数不会阻塞而失败,设置errno为EWOULDBLOCK或者EAGAIN。当这些发生时,可以使用poll或者select来判断何时能接受或者传输数据。
套接字机制有自己的方式来处理异步I/O.一些文献中吧经典的基于套接字的异步I/O机制称作“基于信号的I/O”以区别于实时扩展中的异步I/O机制。
在基于套接字的异步I/O中,当能够从套接字中读取数据,或者套接字写队列变得可用时,可以安排发送信号SIGIO。通过两个步骤欧来使用异步I/O;
1:建立套接字拥有者关系,信号可以被传送到合适的进程。
2:通知套接字当I/O操作不会阻塞时发信号告知。
可以使用三种方式来完成第一个操作步骤
1:在fcntl使用F_SETOWN命令(linux2.4.22支持)
2;在ioctl中使用FIOSETOWN命令(linux2.4.22不支持)
3:在ioctl中使用SIOCSPGRP命令(linux2.4.22支持)
要完成第二个操作,有两个选择:
1;在fcntl中使用F_SETFL命令并且启用文件标志O_ASYNC。 (linux2.4.22支持)
2;在ioctl中使用FIOASYNC。(linux2.4.22支持)
采用信号sigaction函数来注册接收到SIGIO所要做的处理。
网络IPC非阻塞和异步I/O相关推荐
- python 网络编程----非阻塞或异步编程
From: http://blog.chinaunix.net/uid-20730371-id-765038.html 非阻塞或异步编程 例如,对于一个聊天室来说,因为有多个连接需要同时被处理,所以很 ...
- 那些年让你迷惑的阻塞、非阻塞、异步、同步
点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 在IT圈混饭吃,不管你用什么编程语言.从事前端还是后端,阻塞.非阻塞.异步.同步这些概念,都需要清 ...
- 异步同步、阻塞非阻塞、异步回调、线程队列和协程
今天学习了异步同步.阻塞非阻塞.异步回调.线程队列和协程 一.异步同步和阻塞非阻塞 线程的三种状态: 1.就绪 2.运行 3.阻塞 阻塞:遇到了IO操作 代码卡住 无法执行下一行 CPU会切换到 ...
- 同步阻塞、同步非阻塞、异步阻塞、异步非阻塞与 I/O 多路复用、Java NIO 之间的联系
同步阻塞.同步非阻塞.异步阻塞.异步非阻塞与 I/O 多路复用.Java NIO 之间的联系 先验知识 此处的异步指的是什么 同步.异步.阻塞.非阻塞 同步阻塞.同步非阻塞.异步阻塞.异步非阻塞 一个 ...
- recvfrom函数 非阻塞_那些年让你迷惑的阻塞、非阻塞、异步、同步
那些年让你迷惑的阻塞.非阻塞.异步.同步 在IT圈混饭吃,不管你用什么编程语言.从事前端还是后端,阻塞.非阻塞.异步.同步这些概念,都需要清晰地掌握,否则,怎么与面试官谈笑风生(chui niu pi ...
- Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)
文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...
- 如何理解同步阻塞、同步非阻塞、异步阻塞、异步非阻塞
网上闲逛技术贴,看见一个关于理解同步阻塞.同步非阻塞.异步阻塞.异步非阻塞比较风趣的故事,简单明了,很容易理解,因此记录一下,希望更多人能看见. 故事原文: 老张爱喝茶,废话不说,煮开水.出场人物:老 ...
- node - 非阻塞的异步 IO
node - 非阻塞的异步 IO 每当我们提起 node.js 时总会脱口而出 事件驱动.非阻塞I/O 和 单线程,所以我总结了以下几点对这三项概念的阐述,不一定正确仅仅代表个人观点. 单线程 当一个 ...
- 同步阻塞,同步非阻塞,异步阻塞,异步非阻塞IO
在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作. 在比较这两个模式之前,我们首先的搞明白 ...
最新文章
- Spring Boot 2.1之后如何在启动日志中打印请求路径列表
- SOAMANAGER配置后无法登录问题
- android 如何重载函数,android - 如何在Frida中使用“ int”重载函数 - 堆栈内存溢出...
- wordpress中非插件统计文章浏览次数
- 用Hystrix保护您的应用程序
- iOS12系统图片heic如何在电脑上查看
- python计算工资编程-当财务部的人会编程,会发生什么?Python实现自动化群发工资条...
- nyoj--32--组合数
- Openwrt 路由器挂载摄像头教程
- 获取服务器响应失效,从Web服务器获取响应时出现问题
- 【操作系统】实时调度
- UGNX1953~1980版本怎么测量重量
- 苹果手机左上角的数字怎么弄_手把手教你把抖音视频音乐设置为手机铃声。
- SQLite3基础教程(二)
- 详细分析Java8中default关键字
- VS使用NPOI替换word模板中的关键字
- 关于共享单车违规乱停治理方案拟定(畅想共享单车未来五年的战略方向)
- 拆卸计算机主机的步骤是,拆卸主机的图解步骤
- 《让你受益一生的59个好习惯》感悟
- 大数据处理系统都有哪些?(批处理系统与迭代计算系统)