Linux 中有异步版本的 sendfile 吗?

pur*_*tic 4 sockets linux asynchronous aio sendfile

io_getevents乍一看,通知机制看起来非常强大,所以我想要一些可以与它一起使用的东西。我只是还没找到任何东西。在 Windows 上,这很简单:只有TransmitFile,它可以异步工作(重叠),并且如果需要的话可以使用某种通知机制(IOCP、事件)。Linux 上一定有类似的东西,对吗?或者,将我的问题放在某种背景下,我将如何在 Linux 上创建一个高效的文件服务器?

Ano*_*non 5

唉,在 Linux 上没有什么是容易的,几乎任何东西都可能在错误的情况下(甚至是io_submit)阻塞。回答您的问题(在标题和正文中):

他们就是休息时间...

未来(2020+)解决方案

有人建议,如果 io_uring 获得支持,某些未来的 Linux 内核(在撰写本文时已经达到 5.5-rc7 版本)基本上可以通过 io_uring 执行异步发送文件splice()...