【问题标题】:Why this infinite loop does not consume 100% CPU为什么这个无限循环不会消耗 100% 的 CPU
【发布时间】:2023-04-07 17:59:01
【问题描述】:

我很确定无限循环会消耗 100% 的 CPU。为什么下面的循环没有? (任务管理器显示0%)

do
{
    // Do something
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);

【问题讨论】:

  • ReadKey() 块。这不是一个繁忙的循环。
  • 此外,真正的无限循环(倾向于)消耗 100% 的单个 CPU 线程。您可以拥有其中的一到十二个。如果您运行的是 Windows(C#,可能是这样),硬件线程数 == 设备管理器的“处理器”节点中的节点数。
  • 在循环中放置一个断点并找出原因。

标签: c# .net infinite-loop


【解决方案1】:

Console.ReadKey 阻塞在发布线程上,直到用户按下一个键。 while(true) 循环连续执行,并在操作系统允许的范围内消耗 CPU。

参考: http://msdn.microsoft.com/en-us/library/x3h8xffw(v=vs.110).aspx

【讨论】:

    猜你喜欢
    • 2012-09-25
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    相关资源
    最近更新 更多