异步I/O
来源:互联网 发布:单片机就业待遇 编辑:程序博客网 时间:2024/05/20 06:30
异步I/O
信号机构提供了一种以异步的形式通知某种事件已发生的方法。由BSD和系统V派生的所有系统都提供了使用一个信号(在系统V中是SIGPOLL,在BSD系统中是SIGIO)的异步I/O方法,该信号通知进程,某个描述符已经发生了所关心的某个事件。
异步I/O的限制是每个进程只能有一个信号。如果要对几个描述符进行异步I/O,那么在该进程接收到该信号时,并不知道这个信号对应于哪一个描述符。
一、系统V异步I/O
在系统V中,异步I/O是STREAM系统的一部分。它只对STREAM设备和STREAM管道起作用。系统V的异步I/O信号是SIGPOLL。
系统V异步I/O建立步骤:
1、 建立信号SIGPOLL的信号处理程序(signal或sigaction函数建立)
2、 调用ioctl,它的第二个参数(request)是I_SETSIG,第三个参数是产生SIGPOLL信号的条件,第三个参数具体实现见APUE page387表14-7
二、BSD异步I/O
在BSD派生的系统中,异步I/O是SIGIO和SIGURG两个信号的组合。前者是通用异步I/O信号,后者则只用来通知进程在网络就连接上到达了带外的数据。
BSD异步I/O建立步骤:
1、 调用signal或sigacion为SIGIO信号建立处理程序
2、 以命令F_SETOWN调用fcntl来设置进程ID和进程组ID,它们将接收对于该描述符的信号
3、 以命令F_SETFL调用fcntl设置O_ASYNC文件状态标志,使在该描述符上可以进行异步I/O
说明:第3步仅能对指向终端或者网络的描述符执行,这是BSD异步I/O设施的一个基本限制。
对于SIGURG信号,只能执行第1,2步。该信号仅对引用支持带外数据的网络描述符而产生。
- 异步文件 I/O
- 异步I/O
- 异步I/O机制
- I/O 异步访问
- 异步I/O
- I/O异步demo
- 异步I/O
- 异步设备I/O
- 异步I/O
- python 异步I/O
- Linux异步I/O
- Nodejs 异步 I/O
- nodejs-异步I/O
- 异步I/O
- 异步I/O原理
- 伪异步I/O
- NodeJS -- 异步I/O
- 伪异步I/O
- Java Socket网络编程初级入门[zz]
- 设置IE8查看源文件时默认打开的编辑器
- 进程与线程简介
- Intel WIFI Link 5100破解wep密码
- base64
- 异步I/O
- j2me多线程(一) 线程的实现
- links
- JNLP简介
- 介绍一个共享DLL的小技巧
- mysql的表crashed后修复
- hibernate+spring配置
- 经典的回忆:圣斗士人物分析顺口溜(超搞笑)
- Java 事务管理