Windows Sleep(1)은 1 msec을 안 놀아주고 약 10 msec를 놀아 준다.
그래서 대충 1 msec 놀겠금 구현한 함수....
하지만, 태스크 메니저보면 cpu점유을은 100%으로 보이긴 하나 괜춚다!
어차피 열나게 컨텍스트 스위칭 할테니...

extern "C" int delay (unsigned int time)

{

        if (time<10 && time!=0)

        {

               LARGE_INTEGER start;

               LARGE_INTEGER end;

               LARGE_INTEGER frequency;

               LARGE_INTEGER differance;

 

               long double   duration;

       

               QueryPerformanceFrequency(&frequency);

               QueryPerformanceCounter  (&start);

               while (1)

               {

                       Sleep (0); // or SwitchToThread();

 

                       QueryPerformanceCounter (&end);

       

                       differance.QuadPart = end.QuadPart - start.QuadPart;

                       duration            = (long double)(differance.QuadPart*1000/frequency.QuadPart);

 

                       if (time <= duration)

                       {

                              break;

                       }

               }
        }

        else

        {

               Sleep (time);

        }

       

        return 0;

}

 

Posted by 셈말짓기 :