我们可以在 openmp 任务 pragma 的 firstprivate 子句中指定一个 std::vector 对象吗?
是否可以将 vector 对象设为 firstprivate?
它编译和运行正确...它总是线程安全的?
最佳答案
是的,你可以
- 第一个私有(private)变量每个线程初始化一次
- 第一个私有(private)对象是通过以主线程的变量拷贝作为参数调用其复制构造函数而构造的
所以基本上只要
- 类的复制构造函数和赋值运算符是可访问的
- 它们提供深层复制(值)语义
Note that the STL containers satisfy these criteria but you may alter the semantics by doing a container of (non-shared) pointer elements, etc.
一切顺利
关于c++ - OpenMP 并行部分的 firstprivate 中是否允许非 POD 数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7505228/