Guid.NewGuid(); .NET Core 的幕后
Guid.NewGuid(); behind the scenes in .NET Core
昨天研究题目,发现了几个有趣的问题(比如) on how GUIDs are ultimately generated. In brief; it seems that Guid.NewGuid();
calls CoCreateGuid
in the COM, which in turn calls UuidCreate
in the Windows RPC (docs here and here)。
我发现自己在想;当 OS 不是 而非 Windows 时,这是如何工作的,例如 .NET Core 的情况,这是否会影响 'version' algorithm用于生成 GUID(据我所知是 Windows 上的版本 4)?
在非 windows 机器上,.NET Core 将在 macOS 和 linux ("version 4") 上使用 uuid_create
on BSD (which is "version 1") or libuuid's uuid_generate_random
函数。
替换 CoCreateGuid
函数的实现可以在 CoreCLR's source code on GitHub 中找到。
昨天研究题目,发现了几个有趣的问题(比如Guid.NewGuid();
calls CoCreateGuid
in the COM, which in turn calls UuidCreate
in the Windows RPC (docs here and here)。
我发现自己在想;当 OS 不是 而非 Windows 时,这是如何工作的,例如 .NET Core 的情况,这是否会影响 'version' algorithm用于生成 GUID(据我所知是 Windows 上的版本 4)?
在非 windows 机器上,.NET Core 将在 macOS 和 linux ("version 4") 上使用 uuid_create
on BSD (which is "version 1") or libuuid's uuid_generate_random
函数。
替换 CoCreateGuid
函数的实现可以在 CoreCLR's source code on GitHub 中找到。