问题描述
|
我目前正在Linux上探索aio,以将其用于实现Web服务器。正如我已经发现的,没有太多资源可以详细介绍aio的用法。
问题是-在使用aio的单线程应用程序中接受客户端连接的常规方式是什么? (尽可能减少阻塞)
理想情况下,我可以看到aio_accept操作发送一条通知(在我的情况下为回调函数调用),该连接已建立,并且在处理程序中立即调用aio_read。但没有这样的电话:(
谢谢!
解决方法
我认为aio不能在预接受套接字上工作。
您可能要选择它们,或者在准备好时获得SIGIO。
[编辑]
手册页特别指出:\“在其上打开文件的设备必须允许搜索操作。即,在诸如lseek的终端之类的设备上无法使用任何AIO操作
呼叫会导致错误。\“
套接字不允许执行搜索操作,因此即使接受后的套接字也似乎不走运。