2

在带有 OpenMP 的 C++ 中,是否可以使在构造函数的初始化列表中执行的操作在某种意义上是关键的#pragma omp critical

4

1 回答 1

-1

由于criticalOpenMP 中构造的语法是:

#pragma omp critical [(name)] new-line
structured-block

我看到在构造函数关键的初始化程序列表中执行操作的唯一方法是在被初始化的类中定义它们关键。为了更好地解释我自己:

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 章) . 如果考虑聚合而不是继承,则推理显然保持不变。

于 2013-06-13T06:35:14.330 回答