我的算法中有一个方法可以在非常大的数据集上运行非常紧密的循环。我最初是单线程写的,这很好,但是花了很长时间。我现在想要加快速度,所以我现在使用 ThreadPool 来并行化工作。问题是这会导致我的 CPU 使用率达到 95-100%,这是我所预料的。然而,我的表现已经显着提高,但我认为如果我可以减少所有上下文切换,我可以做得更好。这也导致我的其他程序有点滞后,因为它们必须与线程争夺 CPU 资源。
我的问题是我应该怎么做?我唯一能想到的就是限制一次运行的线程数,但这可能会使我的算法变慢,因为一次只能运行几个线程。我也不想在我的线程中添加睡眠,因为我只需要算法尽快运行完成。
编辑:有几个人提到使用 TPL。我认为这是一个好主意,但不幸的是,我忘了提到我一直在使用 .NET 3.5,因为父应用程序尚未发布使用 .NET 4 的版本。