当前位置:  技术问答>linux和unix

异步io 文件读写

    来源: 互联网  发布时间:2016-10-10

    本文导语:  谁能帮我读懂下啊,最好能特别说明下io_prep_pwrite等这样函数的祥解,网上资料好少啊 main() 函数会调用 test_main 出错的地方看下面的注释 #include "config.h" #include "common.h" #include "test.h" #include  #include  #if HAVE_LIBAIO_H ...

谁能帮我读懂下啊,最好能特别说明下io_prep_pwrite等这样函数的祥解,网上资料好少啊
main() 函数会调用 test_main
出错的地方看下面的注释

#include "config.h"
#include "common.h"
#include "test.h"
#include 
#include 

#if HAVE_LIBAIO_H

#define AIO_MAXIO 32
#define AIO_BLKSIZE (64*1024)
#define AIO_MAXIO 8


static int alignment = 512;
static int wait_count = 0;

/*
 * write work done
 */
static void work_done(io_context_t ctx, struct iocb *iocb, long res, long res2)
{

if (res2 != 0) {
io_error("aio write", res2);
}

if (res != iocb->u.c.nbytes) {
fprintf(stderr, "write missed bytes expect %lu got %ldn",
iocb->u.c.nbytes, res2);
exit(1);
}
wait_count --;
}

/*
 * io_wait_run() - wait for an io_event and then call the callback.
 */
int io_wait_run(io_context_t ctx, struct timespec *to)
{
struct io_event events[AIO_MAXIO];
struct io_event *ep;
int ret, n;

/*
 * get up to aio_maxio events at a time.
 */
ret = n = io_getevents(ctx, 1, AIO_MAXIO, events, to);

/*
 * Call the callback functions for each event.
 */
for (ep = events ; n-- > 0 ; ep++) {
io_callback_t cb = (io_callback_t)ep->data ; struct iocb *iocb = ep->obj ; cb(ctx, iocb, ep->res, ep->res2);
}
return ret;
}


int io_tio(char *pathname, int flag, int n, int operation)
{
int res, fd = 0, i = 0;
void * bufptr = NULL;
off_t offset = 0;
struct timespec timeout;

io_context_t myctx;
struct iocb iocb_array[AIO_MAXIO];
struct iocb *iocbps[AIO_MAXIO];

fd = open (pathname, flag, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
if (fd 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • struts+spring+hibernate+jquery实现分页功能的几个基本类介绍(异步加载)
  • c#异步task示例分享(异步操作)
  • Linux 中关于异步函数的问题
  • java异步方法调用框架 asyn4j
  • 异步消息传递框架 Errai
  • Balsa 异步电路仿真和合成系统
  • 异步I/O库 libeio
  • 异步 JS 工具 Async.js
  • 异步JS开发库 Wind.js
  • 异步JS开发库 Jscex
  • JS异步编程库 WinJS
  • 异步connect的问题,27日18:00前结账。
  • ACE linux下的异步IO
  • unix下异步进程的问题
  • 请问单线程异步机制的优势在哪里?
  • c/c++ iis7站长之家
  • 纯异步的Server简单实现 Server
  • 内核进程间发送信号用哪个函数,如果没有这东西,那内核里异步通知用哪个东西
  • PHP异步执行技巧分享
  • c#异步读取数据库与异步更新ui的代码实现
  • Swift 异步编程库 Wyrd


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3