私は C# 非同期ソケット プログラミングを学んでおり、バイト バッファーをある種のプールで再利用し、ソケットからデータを受信するときに必要に応じてチェックアウトすることをお勧めします。
ただし、バイト配列プールを実行する 2 つの異なる方法を見てきました。1 つは単純なキュー システムを使用し、必要に応じてキューに追加/削除するだけでした。1 つが要求され、キューにそれ以上残っていない場合は、新しいバイト配列が作成されます。
私が見たもう 1 つの方法は、プログラム全体で 1 つの大きなバイト配列を使用します。キューの考え方は引き続き適用されますが、代わりに、使用するバイト配列のスライス (オフセット) を決定する整数のキューです。配列が要求され、キューにそれ以上残っていない場合は、配列のサイズを変更する必要があります。
高度にスケーラブルなサーバーに適したソリューションは次のうちどれですか? 私の本能は、必要に応じて配列のサイズを変更すると(大きなチャンクで割り当てたとしても)、特に配列が大きくなった場合にかなりコストがかかると想像するため、多くのバイト配列を使用する方が安くなるということです。複数の配列を使用することもより直感的なようです-私が考えていない1つの大規模な配列を使用する利点はありますか?