Короткий ответ
Возможно (например, могло ли это когда-либо случиться при жизни вселенной)? Да.
Вероятно (при все )? Нет.
Более длинный ответ
Microsoft использует алгоритм версии 4 для генерации идентификаторов GUID (см. Также: здесь ), который генерирует полностью (псевдо-) случайное число.
Учитывая количество возможных GUID, вероятность дубликата ничтожна. Мол, непостижимо крошечный.
Вас беспокоит параллелизм: к счастью, метод NewGuid
является поточно-безопасным , что означает, что он либо блокирует, либо использует для своих целей генератор статических потоков со случайными числами. Первый подход будет эффективно сериализовать все вызовы NewGuid
так, чтобы они происходили последовательно (никогда не одновременно), в то время как последний будет делать вызовы из отдельных потоков независимыми друг от друга.
В любом случае единственная причина, по которой вам следует опасаться получения дубликатов из двух потоков, одновременно создающих случайные числа - GUID
или нет, - это если основные генераторы, используемые потоками, работали (1) из то же самое начальное число (которое могло возникнуть только из-за недостатка проекта), и (2) в зависимости от времени (чего нет в алгоритме GUID версии 4).
Так что да, практически, вы можете рассматривать GUID, сгенерированные одновременно из отдельных потоков, как уникальные.