Re: Here, the debugger says: =?UTF-8?B?4oCcIFdhaXRlZCA9PSAuMDA1MA==?=
=?UTF-8?B?MCDigJ0gc2Vjb25kcy4=?=
Jeff???Relf wrote:
You can wait for 5 milliseconds this way:
#include <Windows.H>
#pragma warning( disable: \
4007 4101 4189 4244 4305 4430 4508 4706 4709 4996 )
#define Tics ( QueryPerformanceCounter( ( DubInt * ) & _Tics ), _Tics )
#define Secs ( _Secs = Tics / Secnd_Dub )
typedef LARGE_INTEGER DubInt ;
__int64 _Tics, Secnd ; double _Secs, Secnd_Dub ;
Names beginning with an _ and a capital letter are reserved for the
implementation (e.g. there may undocumented symbols with these names in
the system headers).
int __stdcall WinMain( HINSTANCE, HINSTANCE, char*, int ) {
QueryPerformanceFrequency( ( DubInt * ) & Secnd ); Secnd_Dub = Secnd ;
double Start = Secs ;
while ( Secs < Start + .005 );
float Waited = _Secs - Start ;
} // Here, the debugger says: ??? Waited == .00500 ??? seconds.
Note that this implements a busy wait, which might not be desireable on
a multitasking OS like Windows. Jochen's solution (call
timeBeginPeriod(1) prior to Sleep(5)) is good if 1-2 ms accuracy is
sufficient. You could also boost the priority of your process and thread
if you need more reliability in your timing (See SetPriorityClass and
SetThreadPriority).
Tom