使用C++ API进行多线程处理

Eag*_*gle 5 c++ tbb openmp boost-thread boost-mpi

我试图使用OpenMP并行我的程序,有时我觉得我达到了死胡同.

我想在我在类中定义(和初始化)的函数成员中共享变量.如果我理解正确,就不可能做一个类#pragma omp parallel shared(foo)的数据成员(例如int,boost::multi_arraystd::vector).例如:在类中的向量数据成员上使用push_back().更新a的值boost::multi_array.

我的问题是,如果OpenMP是适合它的工具,还是应该使用boost :: thread或tbb?或其他什么...什么支持C++ API

Reagrds

Con*_*ius 2

正如文档所述,shared定义对象仅在内存中放置一次。例如,如果您的foo对象包含std::vector某种类型,那么循环中的项目应该完全没问题。push_back但您应该确保您的代码是线程安全的,无论是通过原子指令还是通过互斥体部分。