小さなファイルダウンローダーを開発しています。ファイルをセグメント化してダウンロードし、各セグメントを並行してダウンロードします。私は自分のアプリケーションがイベント システムをサポートすることを望みました。これは、理想的には、既に行われた全体の進行状況を表示するものです。
私の現在の素朴なアプローチは、各スレッドが 10k をダウンロードするたびに、すべてのスレッドが現在の進行状況に関する情報を格納しているデータ構造を単純にロックすることです。次に、計算を行い、イベントを発生させます。これには、通常、スレッドがすべて同時にイベントを発生させるという問題があり、イベントを発生させるたびに構造全体をロックしているという問題があります。一方、接続が遅くなると、イベントが発生するまでに時間がかかることがあります。100ミリ秒ごとにイベントを発生させるシステムが欲しいです。
ソリューションは機能しますが、私はあまり満足していません。説明されている状況への正しいアプローチは何でしょうか?