pur*_*tic 4 sockets linux asynchronous aio sendfile
io_getevents
乍一看,通知机制看起来非常强大,所以我想要一些可以与它一起使用的东西。我只是还没找到任何东西。在 Windows 上,这很简单:只有TransmitFile
,它可以异步工作(重叠),并且如果需要的话可以使用某种通知机制(IOCP、事件)。Linux 上一定有类似的东西,对吗?或者,将我的问题放在某种背景下,我将如何在 Linux 上创建一个高效的文件服务器?
唉,在 Linux 上没有什么是容易的,几乎任何东西都可能在错误的情况下(甚至是io_submit
)阻塞。回答您的问题(在标题和正文中):
sendfile
(Linux 不是 Windows 或 FreeBSD)。有一篇很棒的文章,涵盖了sendfile
TANK 分布式日志问题中的阻塞、警告和想法。这说明lighttpd 提出了一个“异步”sendfile
黑客,但它很复杂并且使用线程。他们就是休息时间...
有人建议,如果 io_uring 获得支持,某些未来的 Linux 内核(在撰写本文时已经达到 5.5-rc7 版本)基本上可以通过 io_uring 执行异步发送文件splice()
...