这里使用的 Process::CLOCK_MONOTONIC常量可用于所有现代 Linux、 BSD 和 macOS 系统以及用于 Windows 的 Linux 子系统。然而,它还不适用于“原始”的 Windows 系统。在这里,您可以使用 GetTickCount64系统调用而不是 Process.clock_gettime,后者在 Windows 上也返回毫秒粒度的计时器值(> = Windows Vista,Windows Server 2008)。
对于 Ruby,您可以这样调用这个函数:
require 'fiddle'
# Get a reference to the function once
GetTickCount64 = Fiddle::Function.new(
Fiddle.dlopen('kernel32.dll')['GetTickCount64'],
[],
-Fiddle::TYPE_LONG_LONG # unsigned long long
)
timestamp = GetTickCount64.call / 1000.0
# => 63988.576809828