私は現在、bittorrentクライアントを書いています。私は自分のプログラムの段階に到達しており、複数のスレッドが自分のプログラムを改善するかどうか、そしていくつ必要になるかについて考え始める必要があります。
プログラムは一度に複数(およそ1〜5)のスレッドと接触する可能性があるため、トラッカーを処理するために1つのスレッドを割り当てると想定しますが、トラッカーによって割り当てられた間隔(約20)でのみそれらに接触する必要があります。分)なので、プログラムにあまり集中しません。
プログラムは、多数のピアと定期的に連絡を取り、ピアからファイルをダウンロードします。以下は、Bittorrent仕様Wikiからの抜粋です。
実装者注:30ピアでも十分ですが、公式クライアントバージョン3は、実際には、ピアが30未満の場合にのみアクティブに新しい接続を形成し、ピアが55の場合は接続を拒否します。この値はパフォーマンスにとって重要です。新しいピースのダウンロードが完了すると、HAVEメッセージ(以下を参照)をほとんどのアクティブなピアに送信する必要があります。その結果、ブロードキャストトラフィックのコストは、ピアの数に正比例して増加します。25を超えると、新しいピアがダウンロード速度を上げる可能性はほとんどありません。UI設計者は、これを変更するのが非常にまれであるため、これをあいまいで変更しにくいものにすることを強くお勧めします。
それは私がおよそ30人の仲間と連絡をとるべきであることを示唆しています。私のBittorrentクライアントに使用するのに適したスレッドモデルは何でしょうか?明らかに、各ピアと各トラッカーにスレッドを割り当てたくはありませんが、おそらくメインスレッド以上のものが必要になります。何を指示してるんですか?