2

为了模拟 100% 的 CPU 使用率,我在代码中放置了一个无限 while 循环( while (true) { } )。这似乎使 CPU 使用率飙升至 30%(对于我在没有 while 循环的情况下运行的同一程序,通常为 2%)。为什么不超过30%?这是双核 Intel i7 处理器。该应用程序是一个简单的控制台应用程序,在 .net 4.0 上运行 c# 代码

 private static void SimulateCPUSpike()
 { 
       while(true) { }
 }
4

3 回答 3

4

CPU 使用率是所有CPU 内核的百分比。
如果您的代码只运行一个线程,则它不能占用多个内核。

您需要为每个核心创建一个单独的线程。( Environment.ProcessorCount)

于 2013-10-23T18:19:40.657 回答
0

双核 CPU,每核 2 个超线程。因此,您可能期望 1 个线程以 100% 的使用率占用总数的 25%。其他 5% 是系统正在执行的所有其他操作。

即使有 4 个线程,由于调度,您可能无法获得 100% 的使用率。

真正的问题是,你为什么想要 100% 的使用率……你想在 CPU 上做牛排吗?

于 2013-10-23T18:22:38.703 回答
0

令人惊讶的是,这在 PowerShell 提示符下起作用:

while(1) {Start-Job {while(1){}}}
于 2021-08-20T16:22:42.373 回答