我在C#中构建了一个应用程序,我希望针对多个内核进行优化。我有一些线索,我应该做更多吗?
更新了更多详情
再次更新
答案 0 :(得分:46)
我认为编写高度优化的多线程进程要比在混合中抛出一些线程要困难得多。
我建议从以下步骤开始:
请记住,多线程版本完全有可能比同一个应用程序的单线程版本更糟糕。没有理由进行良好的工程测量。
答案 1 :(得分:8)
您可能需要查看.NET的并行扩展
答案 2 :(得分:8)
您可能希望阅读Herb Sutter的专栏“有效并发”。你会发现那些文章here和其他文章。
答案 3 :(得分:6)
为了能够更有效地利用多个内核,您应该将您的工作分成可以并行执行的部分,并使用线程将工作分配到内核上。您可以使用线程,后台工作程序,线程池等
答案 4 :(得分:5)
对于C#,开始学习LINQ方式,然后使用Parallel LINQ库及其.AsParallel()扩展。
答案 5 :(得分:2)
了解您尝试解决的问题中的并行性(或并行性的可能性),您的应用程序及其算法比线程同步,库等的任何细节都重要得多。
首先阅读Patterns for Parallel Programming(重点关注'发现并发'和更高级别的设计问题),然后转到The Art of Multiprocessor Programming(从理论基础开始的实际细节)。