次の方法で共有

1903から2004にUpdateしたらWindowsAPIのWaitForSingleObject()の引数に2msecと指定しても16msecで復帰して来るようになりました。

Anonymous
2020-12-17T05:24:58+00:00

Windows10 x64です。先日、1903から2004にUpdateしたのですが、WindowsAPIのWaitForSingleObject()の引数に2msecと指定しても16msecで復帰して来るようになりました。復帰情報は正常で0x00000102 (WAIT_TIMEOUT)です。Sleep()も試してみたのですがやはり16msecで復帰します。

どなたか対処方法をご存じありませんか。

家庭向け Windows | Windows 10 | パフォーマンスとシステムの失敗

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

1 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2020-12-17T06:35:20+00:00

    Sleep()の場合、むしろタイムスライスの関係で最短16msで復帰するのが仕様です。プロセスのスケジューリングに依存しますので、精度を期待してはいけません。1msで戻ってきていたとしたら、別のアプリケーションでtimeBeginPeriod()が実行されていた可能性が高いです。

    システムのカレンダ時計が狂ったり、システムの負荷が上がったりすることを厭わないのであれば、timeBeginPeriod()で精度を調整することも可能ですが、Windows のOSにとって非常に行儀が悪いアプリケーションになります。

    精度が重要であるなら、Multimedia Timerを使うことになります。

    GUIによる画面の更新による精度低下が気になるようなら、CreateThreadpoolTimer()/SetThreadpoolTimer()/WaitForThreadpoolTimerCallbacks()/CloseThreadpoolWork()あたりを使うことを検討してもいいでしょう。

    タイマ精度に関しては、Microsoft社から出ている "Timers, Timer Resolution, and Development of Efficient Code"(docx) が詳しいです。

    詳しい議論をしたいならMSDN Forumの方に移動してください。

    Msdn フォーラム (microsoft.com)

    この回答は役に立ちましたか?

    2 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません