私のアプリケーションには、バックグラウンドで動作するスレッドがいくつかあります。データベースに接続し、時間のかかる選択クエリを実行します。ほとんどの場合、これらのクエリはいくつかのレコードのみを返します。ただし、場合によっては、何万ものレコードが返されることがあります。これらはすべてループで処理されます。
このような状況は複数のスレッドで同時に発生する可能性があるため、これらのスレッドがデータを処理しているときに、アプリケーションで CPU 時間を 100% 使用したくありません。また、すべてのスレッドがプロセッサの時間を争うようにしたくもありません。したがって、これらのスレッドのループの各反復で Sleep() 関数を呼び出します。
ただし、スリープ時間を調整する方法がわかりません。ループを永遠に続けたくないので、スリープ期間が長すぎてはいけません。各反復 (各スレッド) で 2 ミリ秒に設定しました (なぜ 2ms ですか? - それは良い質問です:))。
一方、スリープ時間を延ばすことはできると思いましたが、sleep を呼び出すのは n 回の反復ごとに 1 回だけです (たとえば、50 回の反復ごとに Sleep(100) とします)。どのアプローチを選択すればよいですか? ループの 1 回の繰り返しには、それぞれ約 30 ミリ秒かかります (スリープなし)。
お知らせ下さい。
ありがとう!
マリウス。