如何用C#代码实现Windows 10系统下CPU持续100%负载?
让Windows 10 CPU持续100%负载的C#实现方案
嘿,我懂你为啥之前那些方法不管用——大概率是没吃透多核CPU的调度逻辑,或者你的代码被编译器偷偷优化了!单一的无限循环、大整数计算往往只占满一个核心,其他核心闲着,整体使用率自然上不去;而字符串拼接这类操作,要么很快就完成了,要么被JIT编译器优化得“偷懒”,导致CPU负载掉下来。
要实现持续100%负载,核心思路是给每个CPU核心(包括逻辑核心)分配一个独立的线程,每个线程执行一段不会被优化的持续计算任务,这样所有核心都被占满,整体CPU使用率就稳定在100%了。
完整代码示例
using System; using System.Threading; using System.Threading.Tasks; class CpuStressTest { static void Main(string[] args) { // 获取系统的逻辑核心数(超线程会算入) int coreCount = Environment.ProcessorCount; Console.WriteLine($"正在启动 {coreCount} 个计算线程,每个线程占用一个核心..."); Console.WriteLine("按任意键立即停止程序"); // 创建取消令牌源,用于优雅终止所有线程 var cancellationTokenSource = new CancellationTokenSource(); // 为每个核心启动一个后台任务 for (int i = 0; i < coreCount; i++) { // 用Task.Run自动分配线程池线程,避免手动管理线程的麻烦 Task.Run(() => KeepCoreBusy(cancellationTokenSource.Token), cancellationTokenSource.Token); } // 等待用户输入后触发取消信号 Console.ReadKey(); cancellationTokenSource.Cancel(); Console.WriteLine("正在终止所有线程,程序即将退出..."); } static void KeepCoreBusy(CancellationToken cancellationToken) { // 初始化一个变量,用于持续计算(避免被编译器优化空循环) long calculationValue = 1; // 循环直到收到取消信号 while (!cancellationToken.IsCancellationRequested) { // 执行简单但无法被优化的数学运算,持续占用CPU calculationValue = (calculationValue * 3 + 1) % int.MaxValue; // 绝对不要加Thread.Sleep!否则会释放CPU时间片,负载直接下降 } } }
关键细节说明
- 多核适配:用
Environment.ProcessorCount获取逻辑核心数,确保每个核心都有对应的计算线程,不会浪费算力。 - 避免编译器优化:空循环或者无意义的计算会被JIT编译器直接优化掉,所以这里用
calculationValue持续做运算,让CPU一直有活干。 - 优雅终止:用
CancellationToken来控制线程停止,比强制终止线程更安全,不会留下资源泄漏的隐患。 - 无休眠设计:绝对不要在循环里加
Thread.Sleep,一旦线程休眠,就会主动释放CPU时间片,负载立刻掉下来。
注意事项
- 编译模式:一定要用Release模式编译运行,Debug模式下JIT优化不充分,可能达不到预期的负载效果。
- 硬件散热:持续100%负载会让CPU温度飙升,注意电脑散热,不要长时间运行,避免硬件损坏。
- 系统设置:关闭Windows的节能模式(电源选项里选“高性能”),否则系统会主动限制CPU性能,导致负载上不去。
- 软件干扰:部分杀毒软件或系统优化工具可能会限制这类高负载程序,必要时可以把程序加入信任列表。
内容的提问来源于stack exchange,提问作者Decorayah
相关产品推荐
相关产品推荐

