wait fork
wait fork:等待进程内及其子进程中已经提起的所有fork进程结束
class A;
string name;
function new (string name ="");
this.name = name;
endfunction
task run (int delay, string mark);
fork
# delay;
join_none
$display ("@%0t-----------%s_run_1", $time, mark);
wait fork;
$display ("@%0t-----------%s_run_2", $time, mark);
endtask
enclass
module Top;
A a = new ("a");
initial begin
fork
# 30;
join_none
fork
a.run(10, "thread1")
a.run (20, "thread2");
wait fork;
join
$display ("@%0t-----------%s", $time, "testend");
end
endmodule
@0------------thread1_run_1
@0------------thread2_run_1
@10-----------thread1_run_2
@20-----------thread2_run_2
@20-----------test_end
从结果可以看出,在Initial 进程内, 有2个fork子进程。
第二个fork进程中wait fork 等待其该fork进程内所有的fork进程结束,直接打印test_end退出。