答えて
windowsタスクスケジューラは、1ms(通常は20ms)をはるかに超える細かさを備えています。パフォーマンスカウンタを使って実際にSleep()
機能で費やされた時間を測定することでこれをテストできます。 (QueryPerformanceFrequency()
とQueryPerformanceCounter()
を使用すると、ナノ秒までの時間を測定できます)。 Sleep(0)
はスレッドをできるだけ短時間スリープさせることに注意してください。
ただし、この動作を変更するには、timeBeginPeriod()
を使用し、1msの期間を渡します。今すぐSleep(0)
ははるかに速く戻るはずです。
この関数呼び出しは、マルチメディアストリームをより正確に再生するために作成されたことに注意してください。私はこれを使って何の問題もあったことはありませんが、そのような早い時期の必要性はまれです。あなたが達成しようとしているものによっては、この「ハック」に頼らずに、あなたが望む正確さを得るためのより良い方法があるかもしれません。
まあ、win32 apiのsleep()関数は?
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686298%28v=vs.85%29.aspx
それとも、古いコンパイラでのVisual Studio 2010(または別のC++ 0xの意識コンパイラ)を使用
#include <thread>
#include <chrono>
std::this_thread::sleep();
// or
std::this_thread::sleep_for(std::chrono::milliseconds(10));
を使用している場合は、同じ利便関連Boost Libraries
を使用することができますここでの大きな利点は、移植性であり、遅延paの変換が容易であることです。 「人間」ユニットへの武器。
これは2010年には機能しません。VS 2012、はい、ただし2010年ではありません。 – OldPeculier
@OldPeculierこれは、これが一般的に適用可能な回答であることを意味します。 – sehe
- 1. C++でのスリープ操作、プラットフォーム:os x 10.8
- 2. windows C++とマイクロ秒スリープの可能性
- 3. Windows 7 64bit - スリープ\再開C#コード
- 4. WindowsプラットフォームのIP_TRANSPARENT
- 5. ファイルユニバーサルのWindowsプラットフォーム
- 6. C#でデータを操作する操作
- 7. WindowsでC++ 11を使用した不正確なスリープ
- 8. Windowsプラットフォームでのオーディオ/ビデオストリーミング
- 9. Windowsレジストリ操作のユニットテスト
- 10. C++でのセットの操作
- 11. バイナリファイルのCでの操作
- 12. C#でのダイアログボックスの操作
- 13. Windows CEで<100uSの正確なスリープ
- 14. Windowsプラットフォームで作成したLPをLinuxプラットフォームで実行できますか?
- 15. windows上でのmeteor.jsとmongoDBの操作
- 16. C++のスリープ関数
- 17. ユニバーサルWindowsプラットフォーム。
- 18. Type.GetTypeCode(ユニバーサルWindowsプラットフォーム)
- 19. XamarinフォームグローバルスタイルユニバーサルWindowsプラットフォーム
- 20. マルチスレッド(Windowsプラットフォーム)のヒント
- 21. Cでのポインタ操作
- 22. C++でのファイル操作
- 23. C++での日付操作
- 24. Cでのファイル操作
- 25. Unidata Cでのファイル操作
- 26. Cコードでのビット操作
- 27. C++での低レベルディスク操作
- 28. Windows用gitクライアントでのバッチ操作
- 29. Windows Azureテーブルストレージでの同時操作
- 30. Windowsバッチでのユーザー入力操作プログラミング
[スリープ](http://msdn.microsoft.com/en-us/library/ms686298%28VS.85%29.aspx)機能? – Praetorian
あなたは睡眠が最良の解決策であることは確かですか?それは通常ではありません。 –
数ミリ秒間スリープする必要がある場合は、sleep()が10ms以上の解像度を持つことに注意してください。 –