我目前正在探索 Linux 上的 aio,以使用它来实现 Web 服务器。正如我已经发现的那样,没有太多资源详细介绍 aio 的用法。
问题是——在使用 aio 的单线程应用程序中接受客户端连接的传统方式是什么? (尽可能减少阻塞)
理想情况下,我可以看到 aio_accept 操作发送一个通知(在我的例子中是回调函数调用),表明连接已建立并且 aio_read 在处理程序中立即被调用。但是没有这样的调用:(
谢谢!
最佳答案
我认为 aio 不适用于预接受套接字。
您可能想选择它们,或者在准备就绪时获取 SIGIO。
[编辑]
特别是手册页说:“打开文件的设备必须允许搜索操作。即,不可能在 lseek 的终端等设备上使用任何 AIO 操作 调用会导致错误。”
套接字不允许查找操作,因此即使是后接受套接字似乎也不走运。
关于linux - 在主动网络服务器中接受连接的传统方式(使用异步 IO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6129937/