multithreading - Fortran 基本函数与基本子例程

标签 multithreading performance fortran parallel-processing fortran90

Fortan 允许基本子程序具有intent(inout) 和intent(out) 参数,但基本函数只允许intent(in)。

这是为什么?它只是一种风格约定,还是在调用函数和调用子例程方面有一些普遍的不同?

换句话说,

Elemental Integer Function FOO(i)
  Integer, intent(in) :: i
    ...
  FOO=something
End Function


Elemental Subroutine FOO(i, v)
  Integer, intent(in)  :: i
  Integer, intent(out) :: v
    ...
  v=something
End Subroutine

——这些 FOO 的实现是否同样有效?

最佳答案

没有至少一个标记为 intent(out) 的参数的基本子例程是没有意义的。或 intent(inout) ,因为您必须以某种方式传递结果。一个函数有它的返回值,一个子程序必须使用它的参数。在 Fortran 2008 AFAIK 中,基本程序不一定是纯的,但很难想象一个有用的基本子程序仅通过其副作用。

关于multithreading - Fortran 基本函数与基本子例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6879261/

相关文章:

database - lua 和 lsqlite3 : speeding up select statement

python - 在 Python 中读取 Fortran 的默认输出

java - 无法暂停我的线程!为什么?

java - java应用程序中的进度条和线程错误

c++ - 使用 AVX2 将 8 位从 32 位值 (__m256i) 解压到 __m256 的最快方法

php - 加速计算速率的 SQL 查询

从 c 调用 fortran 77 进行 arpack

python - 使用 f2py 从 Fortran 修改 Numpy 字符串数组

"SELECT ... FOR UPDATE"上的 Mysql 死锁并插入

java - JMM 顺序一致性