by DriedPlumm » 2006年8月24日(木) 16:38
Win32APIが提供する(?間違っていたらすいません)Sleep()関数は、たとえSleep(1)と書いたり、あるいはSleep(18)とか書いても、実際の実行時には、それぞれSleep(15)、Sleep(30)にWindowsが翻訳してしまいます。
要するに、実効精度が15m秒なわけです。
でも、どうしてももっと細かい精度が必要で、たとえば ”5m秒” だけプログラムを眠らせたいときには、何か方法がないのでしょうか?
私がもし全部のプログラムコードをアセンブラで書けるのなら、NOP命令(0x90)を数十個並べるだけでいいのに・・・と思うのですが、実際にはアセンブラは書けないし。
ご存知の方法を教えていただければ、とてもうれしいのですが。どうぞ宜しくお願いします。
なお、「For-Nextループを30000回ほど繰り返せばど5m秒になるでしょ?」というご回答は何卒ごかんべんください。CPUビジーな方法で時間を待たせるのは避けたいのです。
Win32APIが提供する(?間違っていたらすいません)Sleep()関数は、たとえSleep(1)と書いたり、あるいはSleep(18)とか書いても、実際の実行時には、それぞれSleep(15)、Sleep(30)にWindowsが翻訳してしまいます。
要するに、実効精度が15m秒なわけです。
でも、どうしてももっと細かい精度が必要で、たとえば ”5m秒” だけプログラムを眠らせたいときには、何か方法がないのでしょうか?
私がもし全部のプログラムコードをアセンブラで書けるのなら、NOP命令(0x90)を数十個並べるだけでいいのに・・・と思うのですが、実際にはアセンブラは書けないし。
ご存知の方法を教えていただければ、とてもうれしいのですが。どうぞ宜しくお願いします。
なお、「For-Nextループを30000回ほど繰り返せばど5m秒になるでしょ?」というご回答は何卒ごかんべんください。CPUビジーな方法で時間を待たせるのは避けたいのです。