Я хочу, чтобы задержать мою программу на 500 мс, используя тип clock_t .Для примера я следующий код:Функция часов usleep не работает прямо в программе c?
#include <time.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
clock_t start_t, end_t, total_t,start_2,end_2,total_2;
int i;
start_t = clock();
printf("start_t = %ld\n", start_t);
//do a loop
for(i=0; i< 10000000; i++)
{
}
end_t = clock();
printf("end_t = %ld \n", end_t);
total_t = (double)(end_t - start_t)*1000/CLOCKS_PER_SEC;
printf("Total1 in msec %ld \n",total_t);
start_2=clock();
printf("start_2 %ld\n ", start_2);
usleep(500000);
end_2=clock();
printf("end_2 %ld\n ", end_2);
total_2=(double)(start_2-end_2)*1000/CLOCKS_PER_SEC;
printf("Total2 in msec %ld\n ", total_2);
return(0);
}
Я обнаружил, что USleep принимает значение микросекунды в качестве входных данных. Так я поставил 500000.
Но я получаю:
start_t = 1041
end_t = 50441
Total1 in msec 49
start_2 50446
end_2 50478
Total2 in msec 0
Что идет не так? Почему total2 = 0? Любая помощь, пожалуйста?
* «Функция часов() определяет количество времени процессора, используемого ...» * Когда вы спите, время проходит, но не используется процессорное время. – user3386109
Так мне нужна функция delay()? –
Нет, вам нужно использовать другую функцию для измерения времени на стене. На MAC используйте 'mach_absolute_time'. В Windows это 'QueryPerformanceCounter'. – user3386109