Fortran 2008 中用于恢复异步系统调用的习惯用法

Idiom for resuming an async system call in Fortran 2008

如果我进行系统调用,例如:

  call execute_command_line (slowcall1, wait=.false., exitstat=i)
  call execute_command_line (slowcall2, wait=.false., exitstat=j)
  call execute_command_line (slowcall3, wait=.false., exitstat=k)
  call execute_command_line (slowcall4, wait=.false., exitstat=l)

我想并行调用它们,然后在它们进行时检查它们是否已完成,最后采取一些行动。但是,轮询 exitstat 不会给我该信息。检查我不等待的系统调用是否已实际完成的正确习惯用法是什么?

从这里开始: https://gcc.gnu.org/onlinedocs/gfortran/EXECUTE_005fCOMMAND_005fLINE.html

它没有出现任何可选参数:

提供此信息。

是否有推荐的现代 Fortran 过程涉及写入锁定文件作为调用的一部分?或者不同的异步调用?

不行,没办法。您使用的命令是 "fire and forget"。如果您想要更好的控制,请使用线程。不是为了并行,而是为了并发。