質問

どうしてそうなっちゃうんですか疑問がある場合はこれまでにない設定の最大限のCPU負荷、特定のスレッドやって集中的に算出します。

今すぐりの時間がかかるループのスレッド(なみの圧縮を利用し GetTickCount()Sleep() とのハードコード値です。される可能性があるためです。るループを続ける一定期間以上の睡眠る最小限ます。より以下のつの仕事保証のスレッドが使用しないで50%以上のCPUを搭載しています。
しかし行動のためのCPUのコア数(巨大な不利益)だけで醜(小欠陥)).
そのアイデア?

役に立ちましたか?

解決

私はよく知らないの任意のフォローもよろしくお願いのOSのスケジューラーが何をしたい(された場合にもスレッドがアイドルの優先度がない場合に高い優先度の準備のスレッド,おまである。しかし、できる思いますのでご注意かなりの優雅な対側の機能に基づいて行っている。基本的にいないWindows dev機タ):

りデフォルトの期間のスレッドが眠れになります。そして、繰り返し処理毎に(または間隔の繰り返しであり、そのような側が機能しないそのものとなる重要なCPUの負荷)

  1. 計算量のCPU時間おスレッドを使用し、昨年ご対側の機能と呼ばれた(まと呼dCPU).で利用できます GetThreadTimes() APIの期間はスレッドの実行.
  2. 計算量をリアルからの経過期間の最終時間はご対側の機能と呼ばれた(まと呼dClock).
  3. dCPU/dClock%ですがCPU使用のCPU).いよいよ睡眠時間が低減の睡眠時間を。
  4. てのスレッドの眠りのためには、計算されます。

によってどのよう監視計算にCPU使用するために使用 GetProcessAffinityMask() どのように多くのCpuのシステムです。dCPU/(dClock*Cpuの割合の合計CPU時間ご利用いただけます。

だいち魔法の表示件数を増やす表示件数を減ら初期の睡眠時間の増分/減分量が、このアルゴリズムが整い、スレッド走行時などの定%のCPUを搭載しています。

他のヒント

Linuxを変更することができます。ケジューリング優先度スレッドの良().

思いつかないのクロスプラットフォームのい(又はそのような仕完全停止)がご利用GetTickCountかもしれませんの趣味ではないクロスプラットフォーム:)

思用プロセス間通信の集中的なプロセスの良のレベルに何が必要なくなったことになる適切な状態です。

編集:い ベルナール ではなぜだと思いプロセスではなくスレッドがより適切なものがあまりにもかけ離れているが故に合わないお客様の目的.

問題はでないのCPUアイドルを使います。正常に設定するバックグラウンドタスクをアイドルの優先して、OSの対応ケジューリングでのすべてのCPU時間使用されている話です。

しなんですけど、ずっと私のような問題は、ウォッチドッグプロセス。

の場合バックグラウンドタスクがCPUに結合するために使うことができるので、なすべきことはすべての未使用のCPU間です。

もしかしたらすべきである固定用のウォッチドッグプログラム?

きを変更することができるようにな優先度スレッドが変化するのを最大限に活用しうのいずれかを必要とのポーリングおよびhacks制限かに多くのことを起こし、又は使用のOSでの設定を最大限に活用しました。しかし、私はな事がしたいのではないかと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top