我想知道这是否可以避免100%的CPU使用率。
Environment.ProcessorCount将返回Logical Processors Count,在我的情况下i7 4真核8个逻辑。在其他一些情况下,它可以不同。但重要的是CPU使用率。如果我使用我的应用程序来使用Environment.ProcessorCount核心,它将在我的PC上使用100%。怎么办
string lesscpu = Environment.ProcessorCount - 1;
所以一定要删除1个核心。在我的电脑上,它将是7个核心,大约80-90%的CPU使用率。 在其他一些情况下:
2核2逻辑= 1 = 50%cpu
2核4逻辑= 3 = 70%+ cpu
2核6逻辑= 5 = 70%+ cpu
这是真的吗?
更新:
这个繁重的工作发生在我闲置时程序会在我回来时切换到1个线程... 我担心,如果我在所有核心上100%CPU上长时间放置它,我的电脑会过热并重新启动甚至更糟?...
答案 0 :(得分:4)
购买一个好的处理器,然后不使用它的功能,非常点。如果您观察到100%的cpu利用率,那么您可以自信地做到正确。你得到了你为和付出的代价,你编写了一个从线程中获得最大并发性的程序。做得好。
你唯一可能犯的错误就是不要降低Thread.Priority。如果您关心其他程序在竞争处理器时不会变得迟钝,那么这一点非常重要。
答案 1 :(得分:1)
看看SO问题How to get the CPU Usage in C#?。您也可以设置SO How to restrict the CPU usage a C# program takes?中提到的线程的优先级。您也可以查看CPU Usage with graphical indication using C# .NET。