最好的多线程实现c ++

时间:2014-11-25 17:52:35

标签: multithreading visual-c++ sudoku

我正在开发一个在Sudoku Solver中实现多线程的类项目。我当前的求解器像这样工作单线程......

解算器如何工作

在9x9单元格中设置数独谜题,从谜题的左上角开始并进行3次检查(行检查,列检查,框检查),每个单元格的可能数组大小为0-8,如果有检查在检查中找到一个数字,然后它将相应数组元素的单元格设置为1(这意味着该位置不是该框的答案的可能性)。当数组剩下1个元素为0时,它会用答案填充该单元格。

我的问题

我没有尝试制作最快的数独求解器,但我只想显示单线程与多线程之间的时差。哪个线程库最适合用于此?最好运行3个线程,每个线程处理一个检查并通过多个谜题运行它,或者让多个线程运行自己的谜题并解决它更好。有没有更好的方法来表明你能想到的?

1 个答案:

答案 0 :(得分:0)

我会尝试其中一种:
提升 openMP
或英特尔TBB

最容易使用的是openMP,因为您需要在代码上方添加一些#pragma。

boost或intel TBB意味着您确实需要修改代码。

这里有一些链接: http://openmp.org/wp/

https://www.threadingbuildingblocks.org/

http://www.boost.org/

请知道不同的CPU和不同的implmentation会给你不同的结果 你还需要一个分析器,以便更好地理解优化对你有帮助的地方。

如果您在Visual Studio上运行,则可以使用内置的分析器来提高性能。

希望它有助于开始。