(rdtscを使用して)時間を返す高速関数を実装しました。それを と呼びましょうfast_time()
。参考までにシステムコールを使ったオリジナルの関数があるので、 と呼びましょうsystem_time()
。私のプログラムは使用していますfast_time()
が、別のスレッドで、関数から返された時間と元の関数から返された時間の差が事前定義されたしきい値より大きいかどうかを確認するために、while ループを常に実行しています。何かのようなもの
while (true)
{
if (abs((fast_time() - system_time()).microseconds()) > MICROSECONDS_THRESHOLD)
{
report error
}
}
通常、エラーは表示されませんが、エラーが発生する場合があり、この問題をよりよく理解したいと考えています。私の最初の疑いは、への呼び出しが返されたsystem_time()
直後に行われないということです。プログラムを可能な限り「原子的に」fast_time()
実行するにはどうすればよいですか?fast_time() - system_time()