gpt4 book ai didi

linux - POSIX 一体机 : Any (good) way to correlate completion notifications back to original request?

转载 作者:太空狗 更新时间:2023-10-29 12:21:02 26 4
gpt4 key购买 nike

我是否认为 AIO 完成通知(无论是通过线程还是信号完成)没有提供关于哪个请求已完成的信息?除了为每个请求调用单独的回调函数之外,还有什么方法可以实现这种关联吗?表面上,您可以使用原始请求的 aiocb 结构来调用 aio_error 和 aio_return,但您不会将指针返回到 aiocb 结构作为通知回调的一部分。为什么似乎没有执行此操作的机制?

最佳答案

当您提交一个 struct aiocb 来启动异步 IO 时,您可以使用一个 struct sigevent 结构填充它的 aio_sigevent 成员:

   struct sigevent {
int sigev_notify; /* Notification method */
int sigev_signo; /* Notification signal */
union sigval sigev_value; /* Data passed with
notification */
/* ... */
}

union sigval { /* Data passed with notification */
int sival_int; /* Integer value */
void *sival_ptr; /* Pointer value */
};

使用 aio_sigevent.sigev_value.sival_ptr,您可以存储指向您的 struct aiocb 的指针(或将您的 struct aiocb 作为成员),然后您可以在调用信号处理程序时查找它:

si->si_value.sival_ptr;

aio(7) manpage在研究这个时非常有帮助,sigevent(7) 联机帮助页有关于 struct sigevent 结构的详细信息。

关于linux - POSIX 一体机 : Any (good) way to correlate completion notifications back to original request?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8452726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com