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