1.fork join
由于需要等到fork join里面的进程执行完毕才能执行fork语句外面的进程,所以打印结果与for循环语句创建进程的先后相一致。
module fork_jion();
initial begin
for(int i=0; i<5;i++)begin
fork
$display("i is %d",i);
join
end
end
endmodule
2.fork join_none
由于fork join_none语句不会阻塞后面的进程,所以for循环会先创建5个fork join_none进程,并结束for循环,然后这五个进程同时执行,由于执行的时间是for循环结束后,此时i的值刚好不满足for循环,所以打印的值都为5。
module fork_jion_none();
initial begin
for(int i=0; i<5;i++)begin
fork
$display("i is %d",i);
join_none
end
end
endmodule
面对以上情况可以