multithreading - C++11 线程与 OpenMP 的简单并行循环。哪个,什么时候?

标签 multithreading c++11

这是 this other question 的后续我的。

我想知 Prop 有归约操作的并行化循环(如并行化集成)是否属于 C++11 线程的适用领域,或者 OpenMP 是否最适合此类任务。

现在,考虑相同的设置,但线程执行可能引发异常的计算。它会改变场景吗?现在 C++11 线程最适合吗?

谢谢你。

最佳答案

IMO,我更喜欢 OpenMP 用于任何 HPC/科学和工程计算代码。它更直接地针对数据并行性。 C++11 线程代表更多的任务并行性,这对于其他类型的软件(例如,网络服务器应用程序)更可取。

future 情况可能会发生变化,有一些努力将更多的并行性集成到 C++ 中,例如并行 STL 算法。然而,我们现在甚至不知道这种并行性会是什么样子。

您也很少从头开始构建代码。有许多支持 OpenMP(排序、线性代数等)的性能感知多线程库,但支持 C++11 线程的却很少。

关于multithreading - C++11 线程与 OpenMP 的简单并行循环。哪个,什么时候?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36664829/

相关文章:

multithreading - 具有多线程的Grails服务

c# - 多线程-不明白情况

ios - UIImages NSURL 和线程

windows - 如何在 Windows 中以 30 毫秒的间隔执行 10 毫秒 CPU 时间操作?

c++ - 为什么不为左值和右值重载 operator[]?

c++ - std::thread::hardware_concurrency 和静态初始化

c# - WebClient DownloadData 方法卡住 Form

c++ - 在哪里实现哈希函数?

c++ - 为什么调用 shared_from_this 调用 std::terminate

c++ - wchar_t* 到 short int 的转换