为什么无限循环不会将CPU使用率提高到100

时间:2016-08-30 16:09:35

标签: c#

当我使用空循环运行一个简单的c#程序时,我的cpu使用率从8-12%上升到24-20%,核心使用模式几乎相同。

    static void Main(string[] args)
    {
        bool flag = true;
        while(flag)
        {

        }
    }

有人可以解释一下这种行为。我预计此时核心使用率将达到100%。

更新:我使用八核机器和总CPU使用量(总计所有核心使用量)达到25%。每个核心(留下第一个核心)显示类似的使用模式(大约25%)

enter image description here

2 个答案:

答案 0 :(得分:3)

因为它是单线程的。你可能有一个四核CPU。你很可能最大限度地利用单核心。

要完全最大化现代多核CPU,您需要多线程工作负载。此外,如果您的代码太可爱,则必须避免优化。

答案 1 :(得分:2)

由于您的应用程序是单线程的,因此您只使用一个核心。如果它高达25%,我可以猜测运行环境配备了四码处理器。