[英]Is random number generation in multiple threads using C++11 random library slow just like using rand() in multiple threads?
是的,没有。 大多数C ++ 11随机数生成器都是封装自己状态的对象,因此,只要为每个线程创建一个单独的生成器对象,每个线程就应该能够独立于其他线程运行(因此您不需要任何锁定)。
但是std::random_device
的具体情况有些不同:这是旨在(但不能保证)从某种随机数生成硬件中获取真正不确定的数据。 该设备的驱动程序可能会强加自己的锁定要求-而且它的带宽通常也很低,因此,如果您想快速获取大量数字,通常是个糟糕的选择。
在典型情况下,您希望每个线程使用一个生成器(而不是std::random_device
),并仅使用std::random_device
为那些其他生成器提供初始种子。 这可能会在初始化期间强加锁,但随后允许每个线程生成其随机数,而不会与其他线程互锁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.