gpt4 book ai didi

c# - 处理器使用情况(强制完全使用)

转载 作者:可可西里 更新时间:2023-11-01 11:31:13 25 4
gpt4 key购买 nike

首先,我不是学计算机的,我是自学编程的,这么说;

我有一个 C# 程序,可以针对非常大的需求配置文件运行大功率潮流模拟。我在 Windows 7 下使用带有 intel i7 处理器(4 核 -> 8 线程)的笔记本电脑。当我运行模拟时,处理器使用率约为 32%。

我读过其他关于进程优先级的帖子,我或多或少清楚,当某些东西在操作系统上运行时,它会全速运行,但操作系统会保持接口(interface)响应(这是正确的吗?)

好吧,我想用模拟“完全淹没处理器”;获得 100% 的使用率(如果可能)?

提前致谢。

引用#1:Is there a way of restricting an API's processor resource in c#?

引用#2:Multiple Processors and PerformanceCounter C#

编辑:删除无关内容后调用模拟的一段代码

while ( current_step < sim_times.Count ) {

bool repeat_all = false;
power_flow( sim_times[current_step] );

current_step++;
}

我知道它非常简单,而且需要一段时间,因为在原始代码中我可能想要重复一定数量的步骤。

power_flow() 函数调用第三方软件,所以我猜这个第三方软件应该是多线程的,不是吗?

最佳答案

您不能真正强制完全使用 - 您需要为处理器提供更多工作。您可以通过增加线程数来并行处理更多数据来实现这一点。如果您提供源代码示例,我们可以就如何更改代码来实现这一目标提供具体建议。

如果您使用第三方软件进行数据处理,通常很难拆分成多个线程。一种通常有用的策略是拆分输入数据,然后为每个数据集启动一个新线程。这需要特定领域的知识才能知道您可以拆分什么。对于模拟,一旦您尽可能多地拆分一次运行,另一种方法是并行处理多个运行。

Task Parallel Library在不进行大量重构的情况下将代码分解为多个线程非常有用。特别是 data parallelism部分。

一个重要的注意事项 - 你需要确保你正在做的是 thread-safe .我会为你提供一些进一步的阅读。基本原则是您需要确保如果在线程之间共享数据,那么您需要非常小心它们不会相互影响 - 这可能会导致奇怪的问题!

关于您关于接口(interface)的问题 - 在您的进程中,您可以为每个线程分配线程优先级。接口(interface)线程与其他任何线程一样只是一个线程。通常,UI 线程被赋予最高优先级以保持响应,而长时间的后台进程被赋予正常/低于正常的优先级,因为它可以在空闲时间进行处理。可以设置优先级manually ,任何新线程的默认值都是正常的。

关于c# - 处理器使用情况(强制完全使用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20495129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com