【问题标题】:Idiom for resuming an async system call in Fortran 2008在 Fortran 2008 中恢复异步系统调用的成语
【发布时间】:2017-07-03 18:11:57
【问题描述】:

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

  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 过程涉及将锁定文件作为调用的一部分编写?还是不同的异步调用?

【问题讨论】:

    标签: fortran fortran2008


    【解决方案1】:

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

    【讨论】:

    • 这是真的吗?回顾这一点,从文档中可以看出,async 确实旨在为您提供与 OS 系统调用相同的 proc 信息。
    • 是的,这是真的。我不明白你的确切意思是什么“相同类型的信息”。
    猜你喜欢
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多