0

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

  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

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

  • 退出状态
  • CMDSTAT
  • CMDMSG

提供此信息。

是否有推荐的现代 Fortran 程序涉及将锁定文件作为调用的一部分编写?还是不同的异步调用?

4

1 回答 1

1

不,没有办法。您使用的命令是“一劳永逸”。如果您想要更好的控制,请使用线程。不是为了并行,而是为了并发。

于 2017-07-05T11:47:29.390 回答