2

私が書いているストリーミングサーバーにlibevを使用したいと思います。

これがすべてが機能することになっている方法です:

  1. クライアントがサーバーへのTCPソケット接続を開きます
  2. サーバーが接続を受信する
  3. クライアントは希望する画像のリストを送信します
  4. サーバーはリクエストを読み取ります
  5. サーバーはすべての画像をループします
    • サーバーはNASから画像を読み取ります
    • サーバーは画像ファイルのメタデータを処理します
    • サーバーは画像データをクライアントに送信します

libev I / Oイベント(内部でepoll)を使用してソケットから読み書きできるサンプルコードを見つけました。しかし、NASからの読み取りと処理の処理方法がわかりません。これには時間がかかる場合があります。そして、これが起こっている間、私はサーバーをブロックしたくありません。

これは別のスレッドで実行し、スレッドに画像データをクライアントに返送させる必要がありますか?

スレッドプールの使用を計画していました。しかし、おそらくlibevはブロックせずに処理ステップをサポートできますか?

任意のアイデアや助けをいただければ幸いです!

4

1 に答える 1

1

非同期読み取りをサポートするファイルI/Oライブラリ(Boost :: ASIOなど)が必要です。基盤となるAPIはaio_read、、、aio_suspendですlio_listio

于 2011-05-22T04:04:42.123 に答える