对于每个线程,random_device是否以不同的状态启动?
Does random_device start at a different state for each thread?
是否可以保证每个新线程random_device不会以相同的内部状态启动?以便以下代码可能会给出两个不同的值?
#include <iostream>
#include <random>
#include <thread>
#include <mutex>
using namespace std;
int main()
{
auto thr = []()
{
static mutex mtx;
mtx.lock();
cout << random_device()() << " " << endl;
mtx.unlock();
};
thread t1( thr );
thread t2( thr );
t1.join();
t2.join();
}
没有这样的保证。
关于cpp偏好,我们可以阅读
std::random_device 可以在实现定义的伪随机数引擎方面实现,如果非确定性源(例如硬件设备(对实现不可用。在这种情况下,每个 std::random_device 对象可能会生成相同的编号序列。
这基本上取决于实现。
另一件事是创建新random_device
存在性能成本,最好重复使用相同的。
auto thr = []()
{
static mutex mtx;
static random_device rd{};
mtx.lock();
cout << rd() << " " << endl;
mtx.unlock();
};
相关文章:
- 如何创建一个空的全局类并在启动时实例化它
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- 即使我读取了所有内容,在FIFO上打开的QSocketNotifier也会一直启动
- OSX MetalKit CVMetalTextureCacheCreateTextureFromImage失败,状态:
- 使用 std::string () const 函数启动线程或未来
- 启动状态机无法在启动时处理内部转换
- 对于每个线程,random_device是否以不同的状态启动?
- Windows服务处于“启动”状态
- 从C++通过RPC启动新线程会导致进程陷入僵尸状态
- 将QCheckBox的状态保存在文件中,并在程序重新启动时加载状态
- 精神 X3 解析器启动状态
- Qt QState机器同步问题:初始状态未在启动信号上设置
- 由于从客户端启动守护程序应用程序,服务器端口无法返回侦听并处于关闭等待状态
- 什么API将启动FTP传输并向GUI报告状态
- 从python启动多个二进制文件并监视它们的状态
- 启动远程进程并监视状态
- 如何启动MFC SDI应用程序处于非活动状态
- 在一个任务的状态被另一个任务更改后重新启动该任务
- 程序启动后立即退出,退出状态为 0