In reply to goodice:
First of all, it doesn’t make sense to discuss fork/join without some time consuming constructs like delays or event controls. Otherwise it behaves the same as begin/end.
But I think the SystemVerilog case, you meant to write fork/join_none. Otherwise each iteration of the for loop must execute serially. When you switch to fork/join_none, that’s when the automatic lifetime is needed.
I think you need to ask a separate question about blocking assignment and show some code.