目前我有这个F#代码来获得我能管理的最高分辨率,线性时间戳 -
/// The linux representation of time.
type internal timeval =
struct
val tv_sec : int
val tv_usec : int
end
/// Query the linux gettimeofday system call.
[<DllImport("libc")>]
extern void private gettimeofday (timeval&, int64)
/// Get a time stamp at the highest-available resolution on linux.
let internal getTimeStampInternal () =
let mutable t = timeval ()
gettimeofday(&t, -1L);
int64 t.tv_sec * 1000000L + int64 t.tv_usec
不幸的是,由于闰年和系统时间的变化,这个值不是线性的。
我已经读过CLOCK_MONOTONIC
linux函数的clock_gettime
变体会产生更多线性,可能更高分辨率的结果(我希望这也适用于MAC)。
问题是,虽然我做了一些谷歌搜索,但我无法找到如何从.NET调用它,例如使用上面gettimeofday使用的[<DllImport>]
属性。
我将如何做到这一点,如果我不能通过一个简单的DllImport做到这一点,那么解决方法是什么?