Systemverilog(绿皮书)第七章——线程及其通信(二)线程控制

initial begin
    $display("@%0t: start fork ... join example", $time);
    #10 $display("@$0t: sequential after #10", $time);
    fork
        $display("@%0t: parallel start", $time);
        #50 $display("@%0t: parallel after #50", $time);
        #10 $display("@%0t: parallel after #50", $time);
        begin
            #30 $display("@%0t: sequential after #30", $time);
            #10 $display("@%0t: sequential after #10", $time);
        end
    join
    $display("@%0t: after join", $time);
    #80 $display("@%0t: after join", $time);
end

本例中fork...join开了4个线程(即并行运行程序,其中begin...end是顺序执行,算作一个线程)。 initial 块执行结束一共需要10+50+80=140ns。其中打印的顺序为下,在140ns 中全部执行结束。 

@0: start fork...join example
@10: sequential after #10
@10: parallel start
@20: parallel after #10
@40: sequential after #30
@50:  sequential after #10
@60:  parallel after #50
@60:  after join
@140: finish after #80

如果替换为fork...join_any会怎么样呢?

initial begin
    $display("@%0t: 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值