《編程之美》啟發:編寫程式使任務管理器顯示 CPU 佔用率穩定在 50%。任務管理器約 1 秒刷新一次,Windows 時間片約 10 ms。若在 1 秒內讓 CPU 忙閒各佔 50%(即 10 ms 忙 + 10 ms 閒循環),平均佔用率即為 50%。
#include
#include
#include // Sleep()
int main() {
const long n = 8000000; // 理論值
int i = 0;
while (1) {
for (i = 0; i < n; i++) { /* empty */ }
Sleep(10); // 釋放時間片約 10 ms
}
return 0;
}

Sleep(10) 精度有限(最小 ~15.6 ms),實際閒置時間不穩定。n。QueryPerformanceCounter 替代 Sleep,忙等待精確控制時間片。SetThreadAffinityMask)鎖定單核,避免跨核調度干擾。GetProcessTimes),PID 調整忙閒比例。「控制 CPU 佔用率」本質是時間片級別的資源調度博弈。單純空循環+Sleep 只能作為教學示範;生產級方案需結合高精度計時、動態反饋、系統負載感知,並考慮功耗與熱功耗影響。這也是作業系統調度器每天在做的事——我們只是在用戶態嘗試模擬而已。