我实现了一个返回时间的快速函数(使用 rdtsc),我们称之为fast_time()
。我有参考使用系统调用的原始函数,我们称之为system_time()
。我的程序使用fast_time()
但在一个单独的线程中,我不断地运行一个 while 循环来检查从 my 函数返回的时间与原始函数之间的差异是否大于预定义的阈值。就像是
while (true)
{
if (abs((fast_time() - system_time()).microseconds()) > MICROSECONDS_THRESHOLD)
{
report error
}
}
通常我看不到错误,但有时我确实得到了错误,我想更好地理解这个问题。我的第一个怀疑是调用system_time()
不会在fast_time()
返回后立即发生。如何强制程序尽可能fast_time() - system_time()
“原子地”执行?