GUID 算法如何处理 "clock sequence"?
How does the GUID algorithms handle the "clock sequence"?
GUID 算法从 3 个值开始生成算法:
- 你网卡的MAC地址
- 当前时间戳,分辨率为 100 纳秒
- 叫做 "clock sequence" 的东西:根据 GUID 的 RFC,当时钟向后设置或者如果时间戳未从上次 GUID 生成更改时,此值会递增。
那么,GUID 算法如何处理 "clock sequence"?这可能是一种硬件机制吗?它是一个胎面和过程安全的软件例程吗?当计算机具有每 100 纳秒生成如此多的 GUID 以重置 "code sequence" 的计算能力时会发生什么?也许离 GUID 过时的日子不远了..
该实现对编写它的任何人都是免费的。对于提供 GUID 的每个 language/compiler/library,您都不会得到关于 SO 的答案。
来自RFC4122:
If the previous value of the clock sequence is known, it can just be incremented; otherwise it should be set to a random or high-quality pseudo-random value.
所以大多数开发者只会选择后者。
clock-is-set-backward只是时钟序列的原因。时钟序列未链接到硬件时钟或类似的东西。
GUID 算法从 3 个值开始生成算法:
- 你网卡的MAC地址
- 当前时间戳,分辨率为 100 纳秒
- 叫做 "clock sequence" 的东西:根据 GUID 的 RFC,当时钟向后设置或者如果时间戳未从上次 GUID 生成更改时,此值会递增。
那么,GUID 算法如何处理 "clock sequence"?这可能是一种硬件机制吗?它是一个胎面和过程安全的软件例程吗?当计算机具有每 100 纳秒生成如此多的 GUID 以重置 "code sequence" 的计算能力时会发生什么?也许离 GUID 过时的日子不远了..
该实现对编写它的任何人都是免费的。对于提供 GUID 的每个 language/compiler/library,您都不会得到关于 SO 的答案。
来自RFC4122:
If the previous value of the clock sequence is known, it can just be incremented; otherwise it should be set to a random or high-quality pseudo-random value.
所以大多数开发者只会选择后者。
clock-is-set-backward只是时钟序列的原因。时钟序列未链接到硬件时钟或类似的东西。