C# 使用Environment.ProcessorCount可避免100%的CPU使用率?

C# 使用Environment.ProcessorCount可避免100%的CPU使用率?,c#,cpu,C#,Cpu,我想知道这是否可以避免100%的CPU使用 ProcessorCount将返回逻辑处理器计数,在我的例子中是i7 4实核8逻辑核。在其他一些情况下,情况可能有所不同。但重要的是CPU使用率。如果我使用我的应用程序使用Environment.ProcessorCount内核,它将在我的电脑上使用100%。如果我这样做呢 字符串lesscpu=Environment.ProcessorCount-1 因此,请务必移除1个核心。在我的电脑上,它将有7个内核,CPU使用率约为80-90%。 在其他一些情

我想知道这是否可以避免100%的CPU使用

ProcessorCount将返回逻辑处理器计数,在我的例子中是i7 4实核8逻辑核。在其他一些情况下,情况可能有所不同。但重要的是CPU使用率。如果我使用我的应用程序使用Environment.ProcessorCount内核,它将在我的电脑上使用100%。如果我这样做呢

字符串lesscpu=Environment.ProcessorCount-1

因此,请务必移除1个核心。在我的电脑上,它将有7个内核,CPU使用率约为80-90%。 在其他一些情况下:

2核2逻辑=1=50%cpu

2核4逻辑=3=70%+cpu

2核6逻辑=5=70%+cpu

这是真的吗

更新:

这种繁重的工作发生在我空闲的时候,当我回来的时候,程序将关闭到1个线程。。。
我担心,如果我在所有核心上的100%CPU上长时间使用它,我的电脑可能会过热并重新启动,甚至更糟?…

看看这个问题。您还可以设置中提到的线程优先级,以便您也可以查看。

购买一个好的处理器,然后不使用它的功能,这没有什么意义。如果您观察到100%的cpu利用率,那么您可以有信心正确地进行操作。您得到了您所支付的费用,并且您编写了一个程序,可以从线程中获得最大的并发性。干得好


您可能犯的唯一错误是没有降低Thread.Priority。如果您关心其他程序在竞争处理器时不会变得迟钝,这一点很重要。

您希望在CPU利用率和CPU核心方面实现什么?核数不会直接转换为CPU利用率。我的意思是,使用计数/总计数%!~CPU利用率%@theghostofc如果我们只讨论总计数,我不想寻找已用计数:这在理论上仍然有效吗?这看起来确实像一个问题。@PeakDermutag,我不这么认为,IMHO。@ErikPhilips我只想知道这种逻辑是否正确。。。就像GHOSOFC说的,这比这更复杂,我理解。但我想知道这个逻辑是否有效。。。该soultion可以真正得到真正的核心数字,但这个功能是如此的缺陷,并不能在所有的PC上的工作,我最好冒险,并使用这种逻辑比CPU的核心。也谢谢你的链接,它很有用:如果他需要的话,另外30%的CPU没有被使用,也可以被用来做其他的事情。有点毫无意义,在大多数情况下,这只是没有使用,只会让程序运行得更慢。所有程序都可以使用100%的CPU。操作系统按优先级调度线程。顺便说一句,在任何关于操作系统设计的介绍性书籍中都有介绍。有时,你希望你的电脑能够完成一些繁重的工作,同时还能完成其他任务,如在SO上回答问题或浏览Facebook你说得对-100%的CPU会更有效!这种神话是无法推理的。这可能是一个极具吸引力的市场机会,有人可以通过销售标有PC使用标签的灭火器,甚至更糟的是,以200%的价格销售。下面是一个例子,他们故意通过关闭冷却器来过热处理器。它是旧的,AMD得到了一个相当好的叮当声。