有没有办法限制 CPU 其他应用程序的使用?
Is there a way to limit the CPU usage of OTHER applications?
所以,我哥哥在玩《堡垒之夜》时,它有点滞后。所以我提议制作一个应用程序来限制其他应用程序的 CPU 使用,但实际上我在获得限制以继续 other 应用程序时遇到了麻烦。
这是我试过的代码:
public void ThrottledLoop(Action action, int cpuPercentageLimit)
{
Stopwatch stopwatch = new Stopwatch();
while (true)
{
stopwatch.Reset();
stopwatch.Start();
long actionStart = stopwatch.ElapsedTicks;
action.Invoke();
long actionEnd = stopwatch.ElapsedTicks;
long actionDuration = actionEnd - actionStart;
long relativeWaitTime = (int)(
(1 / (double)cpuPercentageLimit) * actionDuration);
Thread.Sleep((int)((relativeWaitTime / (double)Stopwatch.Frequency) * 1000));
}
}
请帮忙,如果您需要任何其他信息,请告诉我。
谢谢
以上评论的总结。
您可以指定 处理器(“亲和力”)允许运行进程。这提供了比设置进程优先级更精细的粒度控制。
例如限制某些进程在具有 16 个逻辑内核的系统上使用 最后 4 个内核,但允许 Fortnite 使用任何它想要的东西。请注意,某些应用可能不太喜欢它。
反病毒程序有时会在系统内核列表的末尾发挥作用。
查看 Windows 任务管理器 详细信息 选项卡。
另见
- How can I set processor affinity to a thread or a Task in .NET?
所以,我哥哥在玩《堡垒之夜》时,它有点滞后。所以我提议制作一个应用程序来限制其他应用程序的 CPU 使用,但实际上我在获得限制以继续 other 应用程序时遇到了麻烦。
这是我试过的代码:
public void ThrottledLoop(Action action, int cpuPercentageLimit)
{
Stopwatch stopwatch = new Stopwatch();
while (true)
{
stopwatch.Reset();
stopwatch.Start();
long actionStart = stopwatch.ElapsedTicks;
action.Invoke();
long actionEnd = stopwatch.ElapsedTicks;
long actionDuration = actionEnd - actionStart;
long relativeWaitTime = (int)(
(1 / (double)cpuPercentageLimit) * actionDuration);
Thread.Sleep((int)((relativeWaitTime / (double)Stopwatch.Frequency) * 1000));
}
}
请帮忙,如果您需要任何其他信息,请告诉我。 谢谢
以上评论的总结。
您可以指定 处理器(“亲和力”)允许运行进程。这提供了比设置进程优先级更精细的粒度控制。
例如限制某些进程在具有 16 个逻辑内核的系统上使用 最后 4 个内核,但允许 Fortnite 使用任何它想要的东西。请注意,某些应用可能不太喜欢它。
反病毒程序有时会在系统内核列表的末尾发挥作用。
查看 Windows 任务管理器 详细信息 选项卡。
另见
- How can I set processor affinity to a thread or a Task in .NET?