Sleep(10000) のようなものを実行し、その間にシステム クロックが変更された場合、スレッドは壁時計時間の 10 秒間、またはそれ以下またはそれ以上スリープしますか? つまり、Sleep() 関数はミリ秒をハードウェア ティックに変換しますか?
1365 次
2 に答える
9
Sleep() は壁時計時間とは無関係です。これは、スレッドのスケジューリングに使用されるのと同じタイマーに基づいています。
ただし、システムクロックの周波数と、タイムアウトが経過した後に実際に実行するようにスケジュールされているため、ほとんどの場合、正確に 10 秒間スリープすることはありません。
于 2010-06-15T15:41:47.477 に答える
3
私が知っているところには文書化されていませんが、そうです、あなたは安全にそう仮定することができます。そうしなかった場合、それは非常に破壊的であり、日光の遷移は年に2回発生します。これは、同等のカーネル関数であるKeDelayExecutionThreadのInterval引数について文書化されています。
待機が発生する絶対時間または相対時間を100ナノ秒単位で指定します。負の値は相対時間を示します。絶対有効期限は、システム時間の変更を追跡します。相対的な有効期限は、システム時間の変更による影響を受けません。
于 2010-06-15T16:01:46.887 に答える