在 C++ 中使用 Fortran 模块 std::thread

Use Fortran module in C++ with std::thread

我想要 运行 一个具有不同 std::threads 不同设置的 Fortran90 函数,它使用许多模块来存储设置和一些通用数据。我看到的问题是,Fortran 模块就像单例对象。当我用两个线程调用函数时,它们确实在同一个模块上工作。有没有办法让模块像 openmp 一样线程私有?

例如,对于 openmp,具有 threadprivate 数据的模块如下所示:

MODULE EXAMPLE
  USE OMP_LIB
  ! some threadprivate data:
  INTEGER                                          :: VALUE = 0
    ! make value threadprivate.
    !$OMP THREADPRIVATE(VALUE)
  CONTAINS
END MODULE EXAMPLE

我可以为 std::thread 做类似的事情吗?

C++ 标准线程与 Fortran 完全不同。 在 Fortran 中您无能为力,

您必须自己实现一切,以某种方式存储数据,而不是在全局(模块)变量中。