返回介绍

9.8.1 wait fork

发布于 2020-09-09 22:55:48 字数 646 浏览 1199 评论 0 收藏 0

wait fork语句被用来确保所有子进程(调用进程产生的进程)的执行都已经结束。

wait fork的语法如下:

wait fork; // 引用自附录A.6.5

指定wait fork会引起调用进程阻塞直到它的所有子进程结束。

当没有进一步的动作时,Verilog会中止仿真的运行。当所有的程序块停止执行的时候(也就是说,它们到达了执行块的尾部),SystemVerilog会自动中止仿真,而不管任何子进程的状态如何(参见16.6节)。wait fork语句允许一个程序块在退出之前等待它的所有并发线程的结束。

对于下面的例子,在任务do_test中,前两个进程产生后任务会阻塞直到其中一个进程结束(或者是exec1,或者是exec2)。接下来会在后台产生另外两个进程。wait fork语句能够确保任务do_test在返回调用之前能够等待产生的所有四个进程结束。

task do_test;
    fork
        exec1();
        exec2();
    join_any
    fork
        exec3();
        exec4();
    join_none
    wait fork; // 阻塞直到exec1 ... exec4完成
endtask

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文