在 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 中您无能为力,
您必须自己实现一切,以某种方式存储数据,而不是在全局(模块)变量中。
我想要 运行 一个具有不同 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 中您无能为力,
您必须自己实现一切,以某种方式存储数据,而不是在全局(模块)变量中。