用POSIX AIO实现ACT

      异步完成令牌( Asynchronous Completion Token,ACT)常用来在异步IO中传递用户自定义参数。例如,在多路IO复用/解复用的时候,我们可以在ACT中存放异步调用发起者的信息,在操作完成时便于定位最初的调用者。

   为传递异步调用的环境信息,Windows平台提供了 I/O完成端口,POSIX提供了aiocb(Asynchronous I/O control block)。但aiocb中并没有专门的字段来存放用户自定义信息。因此,在早期的ACE框架中,只有Windows平台支持ACT。下面代码摘自Linux 2.6.18:

 

可以发现,aiocb的最后32字节未被系统使用,因此我们可以利用这些字节存放用户自定义信息。通常我们最多传递一个地址指针,32字节足够了。 新版ACE框架中的ACE_POSIX_Asynch_Result正是利用了这一特性,从aiocb派生并扩展其特性。

上述代码中的act_字段实现了用aiocb存放ACT信息。调用aio*系列函数时,只要传递ACE_POSIX_Asynch_Result对象即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值