使用带有std :: thread的C ++中的Fortran模块

时间:2017-07-19 09:45:11

标签: c++ module fortran openmp stdthread

我想在不同的std::threads中运行具有不同设置的Fortran90函数,它使用许多模块来存储设置和一些常规数据。我看到的问题是,Fortran模块就像单例对象。当我用两个线程调用该函数时,它们可以在同一个模块上工作。有没有办法让模块threadprivate像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做一些类似的事情吗?

1 个答案:

答案 0 :(得分:1)

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

您必须以一种以其他方式存储数据而不是以全局(模块)变量存储数据的方式自己实现所有内容。