OpenMP 中的 OMP 关键

OMP CRITICAL in OpenMP

这在 FORTRAN 中是什么意思?

C$OMP CRITICAL (UNNAMED)

C$OMP END CRITICAL (UNNAMED)

C那一行不是表示注释吗?但显然当我删除这条线时,它不起作用。这是怎么回事?

这是 Fortran 中的 OpenMP 指令,特别是固定形式。在您的例子中,该部分称为 UNNAMED。引用自documentation,临界区

specifies a region of code that must be executed by only one thread at a time.

对于固定格式的 Fortran,OpenMP 指令以 C$OMP 为前缀,对于自由格式则为 !$OMP。 与 Fortran 中的所有编译器指令一样,OpenMP 指令需要作为注释来实现,以防您的编译器不理解它们。

临界区通常用于避免死锁或竞争条件。这可能就是这种情况,因为如果您删除指令,您的代码就会中断。