所以我有多个线程将使用rand_r函数.该功能的签名是:
int rand_r(int *val);
Run Code Online (Sandbox Code Playgroud)
我试图利用时间播种这个功能,但我遇到了各种各样的麻烦.任何人都可以向我解释如何使用时间调用rand_r,或者以其他简单方式动态调度rand_r.
谢谢!
Ker*_* SB 13
对于可重入版本rand_r,种子只是状态的初始值.每个线程需要一个种子.创建一个种子数组,或使种子变量线程本地:
_Thread_local unsigned int seed = time(NULL);
int do_stuff()
{
for ( ; ; )
{
int n = rand_r(&seed);
// use n
}
}
Run Code Online (Sandbox Code Playgroud)