少し助けてください。
次の機能を持つステートレスサーバーを設計しています。
- クライアントはサーバーにジョブを送信します。
- サーバーがジョブを実行しようとしている間、クライアントはブロックされます。
- サーバーは、ジョブを実行するために1つまたは複数のスレッドを生成します。
- ジョブは終了するか、タイムアウトするか、失敗します。
- (結果に基づいて)適切な応答が作成され、クライアントのブロックが解除され、応答がクライアントに渡されます。
これが私がこれまで考えてきたことです。
- クライアントはサーバーにジョブを送信します。
- サーバーはIDをジョブに割り当て、ジョブをキューに配置してから、クライアントを別のキュー(ブロックされる場所)に配置します。
- ジョブを実行し、結果をフェッチして適切に応答を作成するスレッドプールを用意します。
- IDに基づいて、キューからクライアントを選択し(それにより、ブロックを解除し)、応答を返し、送信します。
手順1、3、4は非常に簡単に思えますが、クライアントをキューに入れてブロックする方法についてのアイデアはありません。また、この子犬をデザインするのに役立つポインタをいただければ幸いです。
乾杯