Jonas Maebe wrote 11 lines
>>> Also: the entire state of the random number generator consists of
>>> regular global variables, so it is not safe to use it from multiple
>>> threads in parallel.
>
> Would it make sense to you to make random thread-safe? E.g. with the
> use of "threadvar" instead of "var" for the global variables in question?
No. The Mersenne twister has a lot of state (about 2KB). Duplicating
this for every thread, along with associated slowdown, is not worth it.
It's better to use a class that encapsulates the state of a random
number generator and then instantiate this class for every thread.
Could I ask for clarification of this please. Are you saying that Random() will crash if called simultaneously by multiple threads, or that it will return suboptimal results?
If, as an example, I have two threads doing network or comms jobs and I want to introduce jitter in the retries, does that mean that I have to put Random() into a critical section?
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]