我正在使用内核级别的异步I/O(即libaio.h
)。在使用io_submit
提交struct iocb
之前,我使用io_set_callback
设置了回调函数,它在iocb->data
中粘贴了一个函数指针。最后,我使用io_getevents
获得完成的事件并运行每个回调。正确处理libaio回调中的上下文数据?
我希望能够在回调中使用一些上下文信息(例如提交时间戳)。我能想到这样做的唯一方法是继续使用io_getevents
,但iocb->data
指向带有上下文和回调的结构。
有没有其他方法可以做这样的事情,并且iocb->data
保证在使用io_getevents
时保持不变?我的理解是,libaio
会自动运行回调,如果iocb->data
未指向某个函数,则会出现问题。
在这里的任何澄清将很好。关于libaio
的文档似乎真的很缺乏。
是!昨晚一起磕磕绊绊。你的答案肯定会填补手册页中缺少的一些空白! – 2012-03-23 15:31:15