ゲートウェイにネットワークアプリケーションがあります。パケットを送受信します。ほとんどの場合、私のゲートウェイはルーターとして機能しますが、場合によっては、パケットを受信することもできます。
私が持っている必要があります:
- メインスレッドは1つだけ
- メインスレッド+正しいフローハンドラーに渡すことを担当するディスパッチスレッド
- フローと同じ数のスレッド
- 他の何か。
?
ゲートウェイにネットワークアプリケーションがあります。パケットを送受信します。ほとんどの場合、私のゲートウェイはルーターとして機能しますが、場合によっては、パケットを受信することもできます。
私が持っている必要があります:
?
あなたのケースは、典型的な Unix サービス デーモンのように聞こえます。問題に対する一般的な解決策は、スレッドではなくフォークを使用することです。
アイデアは、プログラムがソケットをリッスンし、接続を待機することです。接続が到着するとすぐに分岐します。その後、子プロセスは接続の処理を続行します。親プロセス自体はループ内で継続し、着信接続を待ちます。
スレッド化に対する利点:
短所:
多くのコード例をオンラインで見つけることができます。
ネットワーク アプリケーションについてはよくわかりませんが、次のようなものだと思います。
私の個人的な好みは、接続ごとに 1 つのメイン スレッドと 1 つのワーカー スレッドを使用することです。キャップは一切ありません。サーバーは HTTP サーバーのようにステートレスになると想定しています。
ステートフル サーバーの場合、スレッド数を制御する何らかの方法を考え出す必要があります。