我正在开发一个在Sudoku Solver中实现多线程的类项目。我当前的求解器像这样工作单线程......
解算器如何工作
在9x9单元格中设置数独谜题,从谜题的左上角开始并进行3次检查(行检查,列检查,框检查),每个单元格的可能数组大小为0-8,如果有检查在检查中找到一个数字,然后它将相应数组元素的单元格设置为1(这意味着该位置不是该框的答案的可能性)。当数组剩下1个元素为0时,它会用答案填充该单元格。
我的问题
我没有尝试制作最快的数独求解器,但我只想显示单线程与多线程之间的时差。哪个线程库最适合用于此?最好运行3个线程,每个线程处理一个检查并通过多个谜题运行它,或者让多个线程运行自己的谜题并解决它更好。有没有更好的方法来表明你能想到的?
答案 0 :(得分:0)
我会尝试其中一种:
提升
openMP
或英特尔TBB
最容易使用的是openMP,因为您需要在代码上方添加一些#pragma。
boost或intel TBB意味着您确实需要修改代码。
这里有一些链接: http://openmp.org/wp/
https://www.threadingbuildingblocks.org/
请知道不同的CPU和不同的implmentation会给你不同的结果 你还需要一个分析器,以便更好地理解优化对你有帮助的地方。
如果您在Visual Studio上运行,则可以使用内置的分析器来提高性能。
希望它有助于开始。