Здравствуйте, гость ( Вход | Регистрация )
Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
---|---|---|---|---|---|
19.12.2007, 14:49 | qsrand и qrand в потоках... | Вообще по документации qrand() - "Thread-safe version of the standard C++ rand() function.". Т.е. ничего предпринимать вроде как не надо. И в исходниках написано: Цитата // On Windows srand() and rand() already use Thread-Local-Storage // to store the seed between calls Но вызов в разных потоках qsrand(time()) или аналогичным способом, естественно может привести к выбору одной и той же последовательности. Можно попробовать что то вроде qsrand(QTime(0,0,0).msecsTo(QTime::currentTime())), это немного улучшит ситуацию. Так же можно еще xor'ом сложить с указателем на поток, т.е. qsrand(QTime(0,0,0).msecsTo(QTime::currentTime())^(int)thread()) вызывая в контексте QObject с правильно выставленным потоком, тогда повторятся уже вряд ли будет. |
maxvanceffer, | ||
Текстовая версия | Сейчас: 18.12.2024, 20:09 |