最佳多线程实现 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++的主要内容,如果未能解决你的问题,请参考以下文章

C++最佳实践 | 5. 可移植性及多线程

C++多线程怎么实现

如果 ANSI C++ 不支持多线程,非托管 C++ 应用程序如何实现多线程?

c++ 多线程编程

C++中的多线程实现

可移植的 C++ 多线程