2011-05-22 56 views
2

我想使用libev作为我正在写的流媒体服务器。处理从套接字读取数据的最有效方法是什么?

这一切是如何工作的:

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

我发现样本代码,让我读取和使用libev从插座写I/O事件(引擎盖下的epoll)。但是,我不知道如何处理从NAS和处理读取。 这可能需要一些时间。我不想在发生这种情况时阻止服务器。

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

我打算使用线程池。但是,也许libev可以支持一个没有阻塞的处理步骤?

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

回答

1

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

相关问题