为什么多个线程生成的随机数是一样的?# CS - 计算机科学
u*u
1 楼
我有一个程序,主程序产生多个thread,每个thread都要产生一串随机数。
主程序是
{
srand(time(NULL));
for ( i=0;i<10;i++)
{
Thread *pThread = new Thread;
pThread->Begin();//产生一个thread,并使其开始运行
}
}
每个thread的代码是:
{
int data = rand();
cout<Sleep(1000);
}
可是运行结果是: 每次10个thread都产生相同的数。
比如:一开始产生10个12, 1秒后在一起输出10个502,1秒后再一起输出10个44。
这到底是什么原因?有什么方法可以让每次每个thread都输出不同的数?
主程序是
{
srand(time(NULL));
for ( i=0;i<10;i++)
{
Thread *pThread = new Thread;
pThread->Begin();//产生一个thread,并使其开始运行
}
}
每个thread的代码是:
{
int data = rand();
cout<Sleep(1000);
}
可是运行结果是: 每次10个thread都产生相同的数。
比如:一开始产生10个12, 1秒后在一起输出10个502,1秒后再一起输出10个44。
这到底是什么原因?有什么方法可以让每次每个thread都输出不同的数?