处理从套接字读取数据的最有效方法是什么?

时间:2011-05-22 03:37:03

标签: linux threadpool libevent

我想将libev用于我正在编写的流媒体服务器。

这就是一切应该如何运作:

  1. 客户端打开与服务器的TCP套接字连接
  2. 服务器接收连接
  3. 客户端发送他们想要的图像列表
  4. 服务器读取请求
  5. 服务器循环遍历所有图像
    • 服务器从NAS读取图像
    • 服务器处理图像文件元数据
    • 服务器将图像数据发送到客户端
  6. 我找到了示例代码,允许我使用libev I / O事件(引擎盖下的epoll)从套接字读取和写入。但是,我不知道如何处理来自NAS和处理的读取。 这可能需要一些时间。而且我不希望在发生这种情况时阻止服务器。

    这应该在另一个线程中完成,并让线程发送 图像数据回到客户端?

    我打算使用线程池。但是,也许libev可以支持处理步骤而不会阻塞?

    非常感谢任何想法或帮助!

1 个答案:

答案 0 :(得分:1)

您需要一个支持异步读取的文件I / O库(例如Boost :: ASIO)。基础API包括aio_readaio_suspendlio_listio