【发布时间】:2023-03-16 22:50:01
【问题描述】:
当我运行一个带有空 while 循环的简单 c# 程序时,我的 cpu 使用率从 8-12% 上升到 24-20%,并且核心使用模式几乎相同。
static void Main(string[] args)
{
bool flag = true;
while(flag)
{
}
}
谁能解释一下这种行为。我预计此时一个核心使用率会达到 100%。
更新:我使用的是八核机器,总 cpu 使用率(总和所有核心使用率)达到 25%。每个核心(除了第一个)显示出相似的使用模式(大约 25%)
【问题讨论】:
-
你确定你使用的是八核吗?如果是八核,那就是 8,你只显示 4 个 CPU。你确定你没有超线程的 4 核机器吗?
-
是的,它是八核机器。在图片上,我只拍到了其中的 4 个。
-
所有核心都得到了公平的份额。大部分负载可能是切换。
-
@TaW 操作系统会即时将单线程应用程序从一个内核切换到另一个内核吗?这不会造成不合理的缓存问题,尤其是当它切换到完全不同套接字上的核心时?
标签: c#