2009-06-03 5 views
3

Sleep() 이외의 다른 창에서 사용할 수있는 더 나은 절전 기능을 알고 있다면 궁금합니다. Sleep()은 밀리 초 단위의 입력을 받아 입력이 최소 경과 시간만을 보장합니다. 1 밀리 초가 지나가고 있지만 실제로는 15-16 밀리 초의 지연이 있습니다. 지정된 수면 시간을 정확하게 설정하는 방법이 있습니까?Windows의 c에서 절전 기능. 더 나은 정밀도를 가진 함수가 존재합니까?

+0

이없는 경우 보장 된 최소값을 원한다고 말하지만, 실제로는 보장 된 정확한 시간 (또는 보장 된 최대 값)을 실제로 원하는 것처럼 들릴 수 있습니다. –

+0

sleep() 함수는 18ms마다 깨어납니다. –

+0

관련 항목 참조 http://stackoverflow.com/questions/85122/sleep-less-than-one-millisecond – harpo

답변

2

아니요. 프로그램을 잠자기하라는 말을하면 프로세서를 포기하고 운영 체제가 다음에 무엇을 할 것인지 결정하게됩니다. 운영 체제가 제어되면 프로그램에 다른 처리 시간을 지정할시기를 결정합니다. 최소 사양을 지정할 수있는 이유는 있지만 특정 시간에 OS가 프로세스로 복귀 할 것이라는 보장은 없습니다.

1

Multimedia Timers을 살펴보십시오.

+0

멀티미디어 타이머는 여전히 milisecond granuality를 사용합니다 – JaredPar

0

아니요, 밀리 초는 사용 가능한 세분화 수준이므로 Windows에서 더 나은 절전 기능이 없습니다. 짧은 시간 동안 잠자기를 원한다면 스핀 락을 구현해야합니다.

1

수면에만 프로세스가 정확히N 밀리 초 잠을 것입니다하지 않는 것이, 적어도에 대한 N 밀리 초를 실행하지 않습니다 보장합니다. 어쩌면 타이머를 설정하고 싶습니까? 또는 대기 중입니다 (즉, 루프에서 QueryPerformanceCounter를 폴링).

나는이 방법 (통화 중 대기)를 피하려고 거라고하지만, 당신은 사이클을 굽는하고 당신이 낮은 클럭 속도에 투입되는 CPU를 중지하고 (즉, 연소 배터리 수명)