【问题标题】:What is most efficient approach processing data read from socket?处理从套接字读取的数据的最有效方法是什么?
【发布时间】:2011-05-22 03:37:03
【问题描述】:

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

这就是一切的工作方式:

  1. 客户端打开一个到服务器的 TCP 套接字连接
  2. 服务器接收连接
  3. 客户端发送他们想要的图像列表
  4. 服务器读取请求
  5. 服务器循环遍历所有图像
    • 服务器从 NAS 读取图像
    • 服务器处理图像文件元数据
    • 服务器向客户端发送图像数据

我找到了允许我使用 libev I/O 事件(epoll under the hood)从套接字读取和写入的示例代码。但是,我不确定如何处理来自 NAS 的读取和处理。 这可能需要一些时间。而且我不想在发生这种情况时阻止服务器。

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

我正计划使用线程池。但是,也许 libev 可以支持一个处理步骤而不阻塞?

任何想法或帮助将不胜感激!

【问题讨论】:

    标签: linux threadpool libevent


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 2011-08-11
      相关资源
      最近更新 更多