Ну, это зависит.
Когда UUID, порождены одним из определенных механизмов, они либо гарантированно быть уникальным, отличается от всех других генерируемых UUID, (то есть, он никогда не был сформирован раньше, и он никогда не будет сгенерированный снова), или это чрезвычайно вероятно, будет уникальным (в зависимости от механизма).
Это означает, что проблема может быть связана с генератором, который вы используете. Говорят, что они используют ITU-T specification.
Перейдем к странице 7 документа. Если вы используете время, и можете предположить, что:
- Системное время не изменится.
- Идентификатор узла, используемый для идентификации машины, не изменится.
Тогда вы можете по крайней мере, утверждают, что:
«идентификатор UUID будет отличаться от всех других генерируемых UUID,» потому, что время течет и зернистость 100 нс.
Может возникнуть столкновение, если вам нужно сгенерировать UUID с другими машинами или время изменится (не забывайте, что два раза в год во многих странах есть настройка времени). Вот почему есть поле Clock. Кроме того, это довольно мало, поэтому в этом случае вы утверждаете, что:
«UUID, скорее всего, будет уникальным».
Если вы используете вместо этого, генератор случайных чисел, то вы можете только утверждать, что:
«Использование UUID весьма вероятно, должен быть уникальным.», потому что требование генератора случайных чисел не генерировать уникальные числа (но с хорошим генератором случайных чисел ваш очень вероятно, что будет ЧРЕЗВЫЧАЙНО).
Так что в нормальных условиях (например, если вы не перемещаете одну сетевую карту с одного компьютера на другой, а вы меняете время назад) Я полагаю, что вы можете предположить, что они уникальны (используя время). Если вы используете генератор случайных чисел, вы не можете предположить, что они уникальны, но, скорее всего, будут уникальными (о вероятности столкновений ... ну ... если это произойдет с хорошим генератором случайных чисел, вы должны оставаться на домой для следующего метеорного потока).
Ссылки
http://blogs.msdn.com/b/oldnewthing/archive/2008/06/27/8659071.aspx
http://en.wikipedia.org/wiki/Birthday_attack
Вы знаете, что часть «U» [UUID] (http://en.wikipedia.org/wiki/Universally_unique_identifier) означает «Уникальный» ... – tadman
Да, но если у boost есть плохой случайный алгоритм, который делает не важно. – jmasterx