[fpc-devel] Random thread-safe

Jonas Maebe jonas.maebe at elis.ugent.be
Thu Jan 28 13:30:02 CET 2016


Ondrej Pokorny wrote on Thu, 28 Jan 2016:

> Regarding: http://bugs.freepascal.org/view.php?id=29526 (because I  
> cannot answer on closed issues).
>
>>> 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.


Jonas



More information about the fpc-devel mailing list