1

これが私のシナリオです。ソケットから読み取り、パケットの内容に基づいて、パケットを適切なキューに入れました。したがって、10 個のキューがある場合、適切なキューを選択するために 10 個の if-else-if または 10 ケースの switch ステートメントが存在します。したがって、最大 10 個の比較が可能です。

別の方法は、ブロードキャスター/サーバーに10個の異なるポートでブロードキャストするように依頼することです。各ポートからのフィードには、単一の特定のキューのパケットが含まれます。私の側では、別のスレッドを介して各ソケットをリッスンできます(またはスレッドを使用できます特定のポートのトラフィックが少ない/不均一な場合はプールします)。そのため、パケットが属するキューを選択する必要はありませんが、conext スイッチの現象が導入されました。

ここから先は、私の知性と技術的知識により、先へ進むことができなくなります。どのアプローチがより良いパフォーマンスを発揮するかについての啓発はありますか?

4

2 に答える 2

0

Windows を使用している場合は、IO 完了ポート (IOCP) を確認してください。Linux を使用している場合は、epoll を試してください。これらは、両方のシステムでそれぞれ最も効果的なモデルになる傾向があります (一般的なケース)。Windows IOCP モデルは、OS によってスレッド プールに適切にバインドできます。

于 2012-12-03T06:09:21.667 に答える