aio 运用demo

本文档提供了一个简单的aio(异步I/O)使用示例,通过aio.c代码展示了如何在Linux环境中实现异步文件读写。配合Makefile,可以轻松编译和运行该示例程序,体验aio带来的高性能I/O操作。
摘要由CSDN通过智能技术生成

 

aio.c

#include <stdio.h>
#include <libaio.h>
#include <sys/stat.h>
#include <fcntl.h>

#define error() printf("error [%s : %d]\n", __FILE__, __LINE__)

#define BUFF_SIZE 51
#define BUFF_CNT 50

/*
 * 异步读取BUFF_CNT次__FILE__文件,每次大小为BUFF_SIZE,并输出
 * 本代码只是aio用法的demo,aio实际运用在网络数据读写等需要异步操作的地方
 *
 * 本demo使用libaio库
 * 也可以通过syscall直接调用io_setup/io_submit/io_getevents/io_destroy系统调用
 *
 * 由于io_submit后,kernel会尝试读数据,只有失败后才会放到work_queue中异步retry,所以本demo读出了源文件的所有数据
 */
int main(int argc, char *argv[])
{
    int err;
    io_context_t ctx;
    struct iocb iocbs[BUFF_CNT];
    struct iocb *iocbps[BUFF_CNT];
    char buff[BUFF_CNT][BUFF_SIZE];
    struct io_event events[BUFF_CNT];
    int fd;
    struct stat stat;
    int i, cnt;

    fd = open(__FILE__, O_RDONLY);
    if (fd == -1) {
        error();
        return -1;
    }

    err &
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值