最佳多线程实现 C++
Posted
技术标签:
【中文标题】最佳多线程实现 C++【英文标题】:best multithreading implementation c++ 【发布时间】:2014-11-25 17:52:35 【问题描述】:我正在做一个在数独求解器中实现多线程的类项目。我目前的求解器像这样工作单线程......
求解器的工作原理
在 9x9 单元格中设置数独谜题,从谜题的左上角开始并进行 3 次检查(行检查、列检查、框检查),每个单元格都有一个大小为 0-8 的可能性数组,如果有的话的检查在检查中找到一个数字,然后它将对应数组元素的单元格设置为 1(这意味着该位置不是该框的答案的可能性)。当数组剩下 1 个元素为 0 时,它将用答案填充该单元格。
我的问题
我并不是要制作最快的数独求解器,但我只是想展示单线程与多线程的时间差异。哪个线程库最适合用于此目的?最好运行 3 个线程,每个线程处理一项检查并通过多个谜题运行它,或者让多个线程运行自己的谜题并解决它会更好。有没有更好的方式来展示你能想到的?
【问题讨论】:
【参考方案1】:我会尝试以下方法之一: 提升 打开MP 或英特尔待定
最容易使用的是 openMP,因为您需要在代码上方添加一些#pragma。
boost 或 intel TBB 意味着您确实需要修改您的代码。
这里有一些链接: http://openmp.org/wp/
https://www.threadingbuildingblocks.org/
http://www.boost.org/
请知道不同的 CPU 和不同的实现会给你不同的结果 您还需要一个分析器,以便更好地了解优化可以在哪些方面为您提供帮助。
如果您在 Visual Studio 上运行,您有一个内置的性能分析器。
希望它有助于开始。
【讨论】:
以上是关于最佳多线程实现 C++的主要内容,如果未能解决你的问题,请参考以下文章