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 中找到。