Linux I/O模型 与 Java I/O模型、驱动中的异步函数 的区别。
来源:互联网 发布:淘宝付款方式有几种 编辑:程序博客网 时间:2024/05/04 22:39
主要欣赏 Linux 异步I/O 与 Java 的 异步 I/O 设计的精彩之处。
Linux 异步IO
1 : aio_suspend()
它会挂起调用的进程,直到异步的请求完成,数组中的任何一个异步I/O请求完成,aio_suspend都会返回。
那么,下面的一个小例子来实验 验证。
#include <stdio.h>#include <stdlib.h>#include <string.h>?#include <unistd.h>#include <fcntl.h>#include <errno.h>#include <sys/types.h>#include <sys/stat.h>#include <aio.h>#define BUFFER_SIZE 1024#define MAX 2#define ERR_EXIT(m)\ do\ {\ perror(m);\ exit(EXIT_FAILURE);\ }while(0)int main(void){ struct aiocb lee_aiocb,lee_aiocb2; const struct aiocb * cblist[MAX]; int fd ; fd = open("/dev/input/event2",O_RDWR); if(fd < 0){ ERR_EXIT("open"); } memset(&my_aiocb,0,sizeof(lee_aiocb)); memset(&my_aiocb2,0,sizeof(lee_aiocb2)); memset(cblist,0,sizeof(cblist)); cblist[0] = &lee_aiocb; cblist[1] = &lee_aiocb2 lee_aiocb.aio_fildes = fd; lee_aiocb.aio_nbytes = BUFFER_SIZE; lee_aiocb.aio_offset = 0; lee_aiocb.aio_buf = malloc(BUFFER_SIZE + 1 ); if(!lee_aiocb.aio_buf){ ERR_EXIT("malloc"); } lee_aiocb2.aio_fildes = 0; // 0 标准输入 lee_aiocb2.aio_nbytes = BUFFER_SIZE; lee_aiocb2.aio_offset = 0; lee_aiocb.aio_buf = malloc(BUFFER_SIZE + 1); if(!lee_aiocb.aio_buf){ ERR_EXIT("malloc"); } ret = aio_read(&lee_aiocb); if(ret < 0){ ERR_EXIT("aio_read"); } aio_read(&lee_aiocb2); printf("before aio_suspend\n"); ret = aio_suspend(cblist,2,NULL); if(ret < 0){ ....... } printf("after aio_suspend\n"); close(fd); return 0;}
IO多路复用模型
信号驱动IO模型
0 0
- Linux I/O模型 与 Java I/O模型、驱动中的异步函数 的区别。
- Linux 设备驱动中的 I/O模型(二)—— 异步通知和异步I/O
- Linux 设备驱动中的 I/O模型(二)—— 异步通知和异步I/O
- java中的I/O模型
- I/O 模型与Java
- I/O模型的区别
- Linux C程序I/O模型简介与异步 I/O性能模型分析
- Linux C程序I/O模型简介与异步 I/O性能模型分析
- LINUX的I/O模型
- Linux I/O 模型
- Linux I/O模型
- linux I/O模型
- linux I/O模型
- Linux I/O模型
- linux I/O模型
- Linux I/O模型
- Linux I/O模型
- Linux设备驱动中的异步通知与异步I/O
- Python程序-打印九九乘法表
- python的socket解决死锁的几个方法
- Poj 3752:走迷宫
- ./configure: error: C compiler cc is not found 解决方案
- 练习32:列表与for循环
- Linux I/O模型 与 Java I/O模型、驱动中的异步函数 的区别。
- Hbase的API
- KMP算法
- Java基础回顾 : 基本数据类型的包装类
- linux基本命令(30)——chown命令
- [Linux][Install guide]Ubuntu多系统安装注意事项
- HDU 2549 壮志难酬 (水题,但有个小坑!)
- (三)Hyper压缩策略的选择以及JIT
- 23种设计模式(9):访问者模式