crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в qsrand и qrand в потоках...
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
ukazoid Дата 19.12.2007, 17:04
  Спасибо, заработало так как нужно.
Swappp Дата 19.12.2007, 14:49
  Вообще по документации 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 с правильно выставленным потоком, тогда повторятся уже вряд ли будет.
ukazoid Дата 18.12.2007, 15:44
  Генерирую уникальное число, в потоке. Потоков много.
Когда я должен вызывать qsrand для того, чтобы число и правда было уникальным?
Сейчас у меня частенько числа повторяются. :(
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.4.2024, 18:35