Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading Qt';s随机生成器和线程(qsrand和qrand)_Multithreading_Qt_Random - Fatal编程技术网

Multithreading Qt';s随机生成器和线程(qsrand和qrand)

Multithreading Qt';s随机生成器和线程(qsrand和qrand),multithreading,qt,random,Multithreading,Qt,Random,我有一个应用程序,它使用线程池(QThreadPool,自己的实例,即不是全局实例),并通过将任务提交到池的队列来运行一些任务(QRunnable)。 我的主要职能是: qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); 我的任务使用随机数。然而,问题是,这些数字在应用程序的不同执行之间不是随机的。例如,如果我运行应用程序两次,我将看到与输出相同的随机数,而不是预期的不同数。 (当然,我在运行应用程序之间等待的时间超过一秒钟) 如果我将上面的语

我有一个应用程序,它使用线程池(
QThreadPool
,自己的实例,即不是全局实例),并通过将任务提交到池的队列来运行一些任务(
QRunnable
)。 我的主要职能是:

qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
我的任务使用随机数。然而,问题是,这些数字在应用程序的不同执行之间不是随机的。例如,如果我运行应用程序两次,我将看到与输出相同的随机数,而不是预期的不同数。 (当然,我在运行应用程序之间等待的时间超过一秒钟)

如果我将上面的语句放在
run()
方法中每个runnable的开头,则行为会发生变化,并且在执行之间会得到不同的数字。 我是否需要在每个线程中执行上述语句(分别在run()函数中运行)?这似乎很糟糕,不是一个好的解决方案

有没有一种方法可以为任何线程设置一个全局种子,从而避免上述问题


我做错了什么?我感谢任何意见

您是否尝试使用QDebug打印时间以查看它们是否不同?是否可以粘贴更多的代码,包括实际的随机数调用,而不仅仅是qsrand?