【发布时间】:2013-12-28 00:12:46
【问题描述】:
首先,我没有学计算机科学,我自学编程,这么说;
我有一个 C# 程序,它针对非常大的需求曲线运行大量潮流模拟。 我在 Windows 7 下使用带有英特尔 i7 处理器(4 核 -> 8 线程)的笔记本电脑。 当我运行模拟时,处理器使用率约为 32%。
我已经阅读了有关进程优先级的其他线程,并且我或多或少清楚,当某些东西在操作系统上运行时,它会全速运行,但操作系统会保持接口响应(这是正确的吗?)
嗯,我想用模拟“完全淹没处理器”;获得 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() 函数调用第三方软件,所以我猜这个第三方软件应该做多线程,不是吗?
【问题讨论】:
-
您的应用程序是否创建了多个线程?还是一切都在一个线程上?通常一个线程仅限于使用一个 CPU,因此您需要将工作拆分为多个线程。
-
我使用多线程 (ThreadPool.QueueUserWorkItem(_ => { /*Things*/ }); ) 但我也调用了基于使用 8 个系统线程的第三方软件 COM(我可以看到它在系统监视器中)
-
更新了我的答案,希望它能为您指明正确的方向。问题在于线程有很多东西要学。如果有任何不清楚的地方,请告诉我。
标签: c# windows multithreading process