05/01/18 19:06:23 X88J3aOH
私は次のように解釈しています。
1) PeekMessage() だけでメッセージ(メイン)ループ
→ CPU 使用率 100%
→ 消費電力、発熱、Windows アプリとしての行儀の悪さが気になる。
2) フレーム毎に Sleep(0) を挿入する
→ プロセスの CPU 占有は解消できる。
→ システムは依然として CPU 100% を示す。過剰発熱は続く。
3) フレーム毎に Sleep(n) を挿入する
→ 余剰時間を待機する。CPU を解放できる。
→ ただし Sleep 中はメッセージループが滞ってしまう。やはり行儀が悪い。
4) そこでマルチスレッド。
メッセージループとメインループのスレッドを分ける。
ここで PeekMessage() すると (1) に戻ってしまうので GetMessage() を使う。
メインループは Sleep(n) などで fps を調節する。
ただ、URLリンク(homepage1.nifty.com) には
「GetMessage() はスレッドを停止しない」とあります。
PeekMessage() + WaitMessage() で代替すべきなのかも。