2

ノードに「マネージャー」プロセスがあり、いくつかのワーカー プロセスがあります。マネージャーは、クライアントへのすべての接続を保持する実際のサーバーです。マネージャーはすべての着信パケットを受け入れてキューに入れ、次にワーカー プロセスがパケットをキューから取り出して処理し、結果を生成します。彼らは結果をマネージャーに送り返します (マネージャーによって読み取られる別のキューにそれらを入れることによって) が、ここで行き詰まります: 特定のソケットに結果を送信するにはどうすればよいですか? 単一のプロセスでパケットの処理を処理する場合、パケットを受信すると、「トランスポート」オブジェクトをコンテキスト内で取得するだけで応答できるため、簡単です。しかし、私が使用している方法でこれを行うにはどうすればよいですか?

4

1 に答える 1

3

トランスポート (またはプロトコル) への参照を、「イベント」オブジェクトのそのプロトコルで受信したばかりのバイトと共に保持する必要があるようです。そうすれば、接続で受信した応答は同じ接続で送信されます。

シリアルに処理する必要がない場合は、キューイングの必要性をなくすために、データを並列に処理できるファンクタを設定することを検討する必要があります。コードの重要なセクションを保護する必要があることに注意してください。

編集:サーバー設計の評価に関する他の質問から判断すると、状況によっては並列処理ができないように思われるため、私の最初の提案は有効です。

于 2009-01-20T06:00:42.790 に答える