最近在看sv,其中有个问题问大家一下,哪位能解惑一下,谢谢。下面是绿皮书上的一个程序块
program automatic unsynchronized
mailbox mbx;
class Producer;
task run();
for(int i=1; i<4; i++) begin
$display("Producer: before put(%0d)", i);
mbx.put(i);
end
endtask
endclass
class Consumer
task run();
int i;
repeat (3) begin
mbx.get(i);
$display("Consumer: after get(%0d)", i);
end
endtask
endclass
initial begin
mbx = new();
p = new();
c = new();
fork
p.run();
c.run();
join
end
endprogram
书上说程序执行时,先put方法执行完,在执行get方法。这里不理解为什么全部执行完put方法,才进行get方法。我的想法是get开始阻塞,执行一个put后不就可以get到了吗,本来fork ..join,里面两个任务不是并行执行吗?