Frage

Sie suchen einen Thread-sicher Zufallsgenerator fand ich eine Mersenne-Twister-Generator-Klasse, die der Autor sagt, wenn Thread-sicher:

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

Aber nach dem Code studiert ich nicht sehen kann waren, ist es sicher Faden. Es gibt keine Sperren jeglicher Art oder irgendetwas eine Sperrvariable in ihm ähnelt.

Ist diese Umsetzung wirklich Thread-sicher? Wenn ja, was ist die Magie?

War es hilfreich?

Lösung

Es scheint, Thread-sicher in dem Sinne, dass zwei verschiedene MersenneTwist Objekte gleichzeitig verwendet werden können. Sie können nicht das gleiche Objekt in zwei Threads verwenden, ohne sie mit einem Schloss zu schützen.

Ich denke, die Original-C-Version spricht der Autor über die verwendeten globalen oder statischen Variablen, so dass es eine Verbesserung ist.

Andere Tipps

Es gibt eine Diskussion darüber, wie einen Mehrfach-Streaming Mersenne-Twister-Zufallszahlengenerator bei Multiple Stream Mersenne Twister zu machen, und auch eine Implementierung (dh Quellcode in Fortran 95) unter http://theo.phys.sci.hiroshima-u.ac.jp/~ishikawa/PRNG /mt_stream_en.html . Das Verfahren beginnt mehrere Ströme an den Punkten in der Mersenne Twister-Sequenz, die weit voneinander getrennt sind, die gewährleisten, dass die Mehrfachströme sind unabhängig voneinander, und wird die gleiche Zufallszahlenfolge nicht erzeugen. Es gibt keine Anforderungen für Schlösser und damit potentielle Flaschenhälse in parallel Code; die getrennten Ströme von id zugegriffen werden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top