Windows C/Sleep()機能は、時計ドリフト中にどのように動作しますか?

StackOverflow https://stackoverflow.com/questions/3046624

  •  27-09-2019
  •  | 
  •  

質問

スリープ(10000)のようなものを実行し、その間にシステムクロックが変化した場合、スレッドはまだ10秒間の壁2時間、またはそれ以上の睡眠をしますか?つまり、Sleep()関数はミリ秒をハードウェアティックに変換しますか?

役に立ちましたか?

解決

Sleep()は、壁2時間とは無関係です。スレッドスケジューリングに使用されるのと同じタイマーに基づいています。

しかし、システムクロックの頻度と、タイムアウトの経過後に実際に実行される予定があるため、ほとんど10秒間眠りません。

他のヒント

それは私が知っているどこにも文書化されていませんが、はい、あなたは安全にそう仮定することができます。そうしなければ、昼光の移行は年に2回発生します。それ 同等のカーネル関数のために文書化されたKedelayexecutionThreadのインターバル引数:

100ナノ秒の単位で、待機が発生する100ナノ秒の単位または相対時間を指定します。負の値は相対時間を示します。絶対有効期限は、システム時間の変化を追跡します。相対的な有効期限は、システム時間の変更の影響を受けません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top