아래 코드를 사용하여 연속적인 각 함수 호출에 대해 밀리 초 단위로 경과 시간을 계산합니다. 내가 usleep (1000), 즉 1ms를 사용할 때, 각각의 호출 사이의 시간차는 10ms이고, iwleep (1000000) 즉 1 초를 사용할 때 놀랍게도 각 호출 사이의 시간 간격은 1ms 미만으로 떨어진다. 코드 조각은 다음과 같은 :경과 시간을 계산하는 usleep()은 이상한 동작을 보입니다.
#include<stdio.h>
#include<stdlib.h>
#include<sys/time.h>
#include<unistd.h>
struct timeval start_time;
void handler(int);
int main()
{
struct timeval current_time;
int i=0;
gettimeofday(&start_time,0);
gettimeofday(¤t_time,0);
printf("%012.3fms: emulationbegins\n",((current_time.tv_usec-start_time.tv_usec)/1000.0));
while(i++<5)
{
usleep(1000); // compare with usleep(1000000)
handler(i);
}
return 0;
}
void handler(int i)
{
printf("In Handler %d\n",i);
struct timeval current_time;
gettimeofday(¤t_time,0);
printf("%012.3fms: Handler Called\n",((current_time.tv_usec-start_time.tv_usec)/1000.0));
return;
}
나는 그것을 놓쳤다. .. 고맙다!! –
관련 질문이 있습니다. 실수를 정정 한 후 usleep (1000)과 usleep (1000000)은 상당한 차이가 있지만 usleep (1000)과 usleep (5000)은 거의 같습니다. 왜 ?? –
@ vikas_2kx'usleep' 함수는 주어진 양보다 적 으면 타이머의 해상도가 충분히 높지 않으면 실제로자는 시간이 길어질 수 있습니다. –