Pregunta

Búsqueda de un generador aleatorio seguro para hilos he encontrado una clase de generador de Mersenne Twister que el autor dice que si no hay peligro de rosca:

http://www.umiacs.umd.edu/~yangcj/mtrnd. html

Sin embargo, después de estudiar el código no puedo ver fuera es seguro para subprocesos. No hay cerraduras de cualquier tipo o algo parecido a una variable de bloqueo en ese país.

¿Es realmente esta implementación hilo de seguridad? Si es así lo que es la magia?

¿Fue útil?

Solución

Parece ser thread-safe en el sentido de que dos objetos MersenneTwist diferentes se pueden utilizar simultáneamente. No se puede utilizar el mismo objeto en dos hilos sin que lo protege con una cerradura.

supongo que la versión original C el autor habla de variables globales o estáticas usadas por lo que es una mejora.

Otros consejos

Hay una discusión de cómo hacer un generador de corrientes múltiples Mersenne Twister número aleatorio en corriente múltiple Mersenne Twister, y también una aplicación (es decir, el código fuente en Fortran 95) a http://theo.phys.sci.hiroshima-u.ac.jp/~ishikawa/PRNG /mt_stream_en.html . El método se inicia múltiples flujos en los puntos en la secuencia de Mersenne Twister que están muy separados, garantizando que los múltiples flujos son independientes el uno del otro y no producirán la misma secuencia de números aleatorios. No hay necesidad de cerraduras y de este modo posibles cuellos de botella en código paralelo; las corrientes separadas se accede por ID.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top