寻找线程安全的随机发电机,我发现了一个Mersenne Twister Generator类,作者说如果线程安全:

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

但是在研究了代码之后,我看不到它是安全的线程。没有任何类似于锁的锁的锁。

此实现真的线程安全吗?如果是这样,什么是魔术?

有帮助吗?

解决方案

从某种意义上说,可以同时使用两个不同的mersennetwist对象,这似乎是线程安全。您不能在两个线程中使用相同的对象,而不会使用锁定。

我猜作者谈论的原始C版本谈论了使用的全局或静态变量,因此这是一个改进。

其他提示

讨论了如何在多个流Mersenne Twister处制作多式媒体旋风随机数生成器,以及在 http://theo.phys.sci.hiroshima-u.ac.jp/~ishikawa/prng/mt_stream_en.html. 。该方法在Mersenne Twister序列中的点开始多个流,这些流被广泛分开,确保多个流相互独立,并且不会产生相同的随机数序列。不需要锁,因此可以按平行代码进行潜在的瓶颈;单独的流由ID访问。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top