【发布时间】:2011-12-29 03:31:04
【问题描述】:
我创建了一个新线程。这是一个线程方法代码:
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% 的负载。
我应该怎么做才能减少循环迭代之间处理器上的负载?
【问题讨论】:
-
如果有 Thread.Sleep 不应该拿 50% 吗?您确定是 this 线程占用了所有 CPU 时间吗?
-
你确定你只有 1 个线程吗?
-
卸载处理器是什么意思? (也许您可以编辑您的问题并重新表述)
-
thread.sleep 通常不是一个好的设计。见these comments
-
还应该注意的是,
Sleep睡眠时间至少您设置的时间。当Sleep需要超过一秒的时间才能返回时,您现在的操作方式可以让pos与实时不同步。
标签: c# .net multithreading optimization cpu-usage