在 C 语言中,您可能能够使用 AIO 在后台执行 IO,如果 IO 需要一段时间则不会挂起,也不需要不必要地创建线程。
但是除了像这样忙于等待之外,有没有办法可以放置回调函数,或者手动等待 AIO 操作结束(即像pthread_join()
) ?
// Start async operation
// Do work
while (aio_error(some_aiocb) == EINPROGRESS);
// Check if async operation succeeded, etc.
我从事的产品是一个高性能消息系统。它的一个组件是高速消息存储。它用于
aio_suspend()
等待一个或多个异步操作完成。它支持超时。它对我们来说很有效。我读到过另一种方法,即使用“未记录”的函数
io_set_eventfd()
来使用 epoll。这是我找到的一些非官方文档。但我没有尝试过,所以无法提供任何指导。