2011-02-06 13 views
0

マルチスレッド環境でソケットグループの転送速度を制限する場合、最も効率的なレート制限アルゴリズムは何ですか?現在、私はSelectorクラスに依存する単一のスレッド設計を使用しています。このシステムでは、転送速度を制限するのはかなり簡単ですが、すべてのIO操作を処理するためにワーカースレッドを使用することを検討しています。もちろん、同期オーバーヘッドが発生しないようにしたいと思います。マルチスレッド環境で接続グループを制限するレート

答えて

1

Socket/SocketChannelの読み込み/書き込み呼び出しには、数多くの同期が必要です。データを書き込むレートを制限することはできますが、データの読み込み速度を制限しようとするとそれほど効果はありません。レートデータが送信されるのではなく、バッファリングの程度が決定されます。

同期コストは最大2マイクロ秒です。送信されるデータを制限するとすぐに、はるかに大きな数字で遅れますが、100〜100,000 usと言います。

シンプルで機能し、後で最適化することを心配するものを実装することをお勧めします。

+1

ありがとうございました!まあ、私はあなたが正しいと思うし、それを最適化するための時間を費やして初めて、そして最初に働く解決策を作る方が良いです。 –