我已经用 C# 构建了一个应用程序,我希望针对多核进行优化。我有一些线程,我应该做更多吗?
更新了更多细节
- C# 2.0
- 在 Windows Vista 和 Windows Server 2003 上运行
再次更新
- 此代码作为服务运行
- 我不想拥有完整的代码......我的目标是获得您的经验以及如何开始。就像我说的,我已经使用过线程。我还能做什么?
我已经用 C# 构建了一个应用程序,我希望针对多核进行优化。我有一些线程,我应该做更多吗?
更新了更多细节
再次更新
我概括地说,编写一个高度优化的多线程进程比仅仅在混合中加入一些线程要困难得多。
我建议从以下步骤开始:
请记住,多线程版本的性能完全有可能比同一个应用程序的单线程版本更差。良好的工程测量没有任何借口。
您可能想看看 .NET 的并行扩展
您可能想阅读 Herb Sutter 的专栏 'Effective Concurrency'。您可以在这里找到这些文章,以及其他文章。
为了能够更有效地利用多个内核,您应该将您的工作分成可以并行执行的部分,并使用线程将工作分配给内核。您可以使用线程、后台工作者、线程池等
对于 C#,开始学习 LINQ 做事方式,然后使用Parallel LINQ库及其 .AsParallel() 扩展。
了解您要解决的问题、应用程序及其算法中的并行性(或潜在的并行性)比线程同步、库等的任何细节都重要得多。
首先阅读Patterns for Parallel Programming(侧重于“发现并发”和更高级别的设计问题),然后继续阅读The Art of Multiprocessor Programming(从理论基础开始的实际细节)。