Thread random stability

Each thread and objects have their own RNGs, and RNGs of threads and objects (i.e., each process) are hierarchically seeded.
When a thread is created, or when an object is new-ed, the random state of its internal RNG is initialized using the next random value from the parent-block’s RNG as seed. This guarantees the failed tests can be reproduced using same seed.

My question:


fork
execute_thread_1();
execute_thread_2();
execute_thread_3();
join_none


Here I spawned 3 thread here simultaneously. There’s no guaranteed order between tread1,2,3. Any one of the thread can start first.
Then how can we have thread random stability if there’s no guaranteed order of seeding their RNGs?

Thanks in advance,
Jeff

In reply to Jeff_Li_90:

Because the LRM guarantees the thread seeding order independent of the execution order. i.e. the threads get queued to execute with their seed in order.