gpt4 book ai didi

c# - 如何在线程无限循环期间减少处理器使用率?

转载 作者:行者123 更新时间:2023-11-30 21:18:12 24 4
gpt4 key购买 nike

我创建了一个新线程。下面是线程方法代码:

while (true)
{
if (!showHelp)
{
Console.Clear();
Console.WriteLine("==============================================");
Console.WriteLine(player.PlayList.CurrentTrack().Artist + " "
+ player.PlayList.CurrentTrack().Title + " "
+ player.PlayList.CurrentTrack().Genre.ToString());
Console.WriteLine(" [ " + pos.Duration() + " / "
+ player.PlayList.CurrentTrack().Length + " ] ");
Console.WriteLine("===============================================");
}

Thread.Sleep(1000);

if (isPlaying)
pos += TimeSpan.FromSeconds(1);

if (pos > player.PlayList.CurrentTrack().Length)
{
pos = TimeSpan.Zero;
player.Next();
}
}

我想更改控制台中的当前轨道位置。每次迭代我休眠 1 秒,然后将 1 秒添加到位置。

我在无限循环中执行此操作,我的处理器似乎处于 50% 的负载之下。

我应该怎么做才能减少循环迭代之间处理器的负载?

最佳答案

CPU 负载似乎更可能是由于正在播放的媒体而不是这段代码造成的。

您有双核或超线程 CPU 吗?在这种情况下,50%(例如,在 Perfmon 中)对应于一个 CPU 被完全使用——这可能是媒体播放器——意味着你的代码在这里(基本上)是空闲的。当您一次休眠 1 秒时,这就是您所期望的 - 就 CPU 而言,这是永恒的。

媒体播放是一个非常占用 CPU 资源的过程,除了点击“停止”或“暂停”之外,您无能为力。

关于c# - 如何在线程无限循环期间减少处理器使用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4354297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com