Я проверил, поддерживает ли моя система точность в микросекундах как сделать поддержка точности в наносекундах Используя таймер ускорения, я могу печатать текущее время с точностью до микросекунд Вывести текущее время в микросекундах
Теперь, когда я проверяю, работает nanosleep/usleep или нет, я запускаю эту программу.
Вот моя программа1
Print current time in microsec
usleep(1); // sleep for 1 microsec
Print current time in microsec
Вот мой вывод
01:43:38.799150
01:43:38.799393
Когда я запускаю эту программу2
struct timespec delay;
delay.tv_sec = 0;
delay.tv_nsec = 1000;
Print current time in microsec
nanosleep(&delay, NULL);
Print current time in microsec
Я получил этот вывод
01:48:25.919269
01:48:25.919838
Я ожидаю разницы в текущем времени всего в 1 микросекунду, тогда как на самом деле я получаю разницу более чем в 100 микросекунд. В чем причина?
Я сомневаюсь, правильно ли моя система выполняет usleep/nanosleep, хотя usleep(1) также косвенно вызывает nanosleep(1000)
Я использую g++, линукс. Любая помощь или понимание будут замечательными, и спасибо заранее.