c++和OpenMP:如何使构造函数的初始化列表至关重要
C++ and OpenMP: How to make the initializer list of a constructor critical?
在使用OpenMP的c++中,是否有可能使构造函数的初始化列表中执行的操作在#pragma omp critical
意义上是临界的?
OpenMP中critical
结构的语法为:
#pragma omp critical [(name)] new-line
structured-block
在构造函数的初始化列表中执行操作的唯一方法是在被初始化的类中定义它们为critical。为了更好地解释我自己:
class Base {
public:
Base() {
#pragma omp critical
{
/* Some critical operation here */
}
}
/* ... */
}
class Derived : public Base {
public:
Derived() : Base() {} // Here base call some critical code
/* ... */
}
如果需要使Base
构造函数中的操作仅在少数对象中至关重要,我会亲自尝试设计两个不同的Base
策略并将Derived
重构为宿主类(参见"现代c++设计"第1章关于策略的参考)。如果考虑聚合而不是继承,推理显然是相同的。
相关文章:
- C++类 - 初始化列表 - 递归 - 按值传递
- 在初始化列表之外手动调用基类的构造函数
- C++:带有大括号初始化列表的函数调用表达式 - 标准是否规定在单个元素列表的微不足道的情况下忽略大括号?
- std::map与谓词与初始化列表
- 类内初始化与构造函数初始化列表的顺序
- 当返回语句时,逗号运算符、大括号初始化列表和 std::unique_ptr 组合在一起
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 如何在初始化列表中的构造函数之后初始化变量/对象?
- C++初始化列表与分配值
- C++初始化列表中的向量集大小或调整大小
- 在构造函数初始化列表中使用 std::variant
- emplace_back初始化列表错误,当初始化列表在独立变量上工作时
- 解释了构造函数成员初始化列表
- 使用初始化列表时如何获取私有数据?
- 用初始化列表和超类构造函数声明子类构造函数的正确方式
- 如何在成员初始化列表中声明共享指针
- 庞大的初始化列表,如何修复"fatal error C1060: compiler is out of heap space"
- 我可以检查初始化列表中设置的构造函数主体中的变量吗
- 使用整数初始化列表初始化长双精度的向量
- 是否可以在C++中使用初始化列表设置数组的特定成员?