由于GUID生成是时间相关的,如果在不同线程上的同一时刻多次调用System.Guid.NewGuid(),它是否会返回相同的GUID?
答案 0 :(得分:7)
在Windows上,GUID(UUID)是使用UuidCreate从加密随机数生成器创建的。它们是RFC 4122的版本4 UUID。除非您使用使用UuidCreateSequential创建的旧版本1 GUID,否则不会涉及时间戳或以太网卡。
答案 1 :(得分:5)
不,内部有一个序列号会针对每个呼叫进行更改,因此同一系统上不同线程上的多个同时呼叫不会创建重复的Guid。
这并不意味着Guid的可见部分可以看到每次通话的增量。
答案 2 :(得分:0)
Transact-SQL NEWID函数和应用程序API函数和方法根据其网卡的标识号加上CPU时钟的唯一编号生成新的uniqueidentifier值。每个网卡都有唯一的标识号。 NEWID返回的uniqueidentifier值是使用服务器上的网卡生成的。应用程序API函数和方法返回的uniqueidentifier值是使用客户端上的网卡生成的。
。根据msdn,它不会在时间或任何电脑中产生重复。
答案 3 :(得分:0)
除非您的线程在您的计算机上的不同核心上运行,否则在给定时间只有一个线程实际运行。因此,我不认为对NewGuid()的调用很可能会在同一时间进行。