我有一个使用线程池(QThreadPool
,自己的实例,即不是全局实例)的应用程序,并通过将任务提交到池的队列来运行某些任务(QRunnable
)。
在我的主要功能中,我这样做:
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
我的任务使用随机数。然而,问题是数字在应用程序的不同执行之间不是随机的。例如,如果我运行应用程序两次,我将看到与输出相同的随机数,而不是我期望的不同数字。 (当然,我在运行应用程序之间等待的时间超过一秒钟。)
如果我将上面的语句放在run()
方法中每个runnable的开头,那么行为就会改变,并且我在执行之间会得到不同的数字。
我是否需要在每个线程中执行上述语句(分别是runnable,在run()函数中)?这似乎很讨厌,不是一个好的解决方案。
有没有办法设置一个适用于任何线程的全局种子,以避免上述问题?
我做错了什么 - 我感谢任何投入。