Okay. Interesting. Sounds like it is necessary to develop cooperating parallel threads under the assumption that any interleaving of statments may be possibile and hence full attention to mutual exclusion of critical sections must be given at the thread-implementation level.
Do you agree?
I must admit that I didn’t scour the LRM but thought that non-premption must be assured in it based on this statement by Janick Bergeron in “Writing Testbenches in SystemVerilog”, pg. 163:
"In an operating system, every thread has a limit on the amount of processor time it can have during each execution slice. Once that limit is exhausted,the thread is kicked out of the processor to be replaced by another. There is no such limit in a simulator. Any execution thread keeps executing until it explicitly requests to be kicked out…
“In SystemVerilog, an execution thread simulates and and keeps simulating, until and active timing-control statement–@, # or wait–is executed.”