nanosleep
или clock_nanosleep
- это функция, которую вы должны использовать (последняя позволяет вам указывать абсолютное время, а не относительное время, и использовать монотонные часы или другие часы, а не только часы реального времени, которые могут работать в обратном направлении.если оператор сбрасывает его).
Имейте в виду, однако, что с точки зрения разрешения вы редко будете лучше, чем несколько микросекунд, и он всегда округляет продолжительность сна, а не округляет.(В любом случае округление вниз вообще невозможно, поскольку на большинстве машин вход и выход из пространства ядра занимает больше микросекунды.)
Также, если возможно, я бы предложил использовать вызов, который блокирует ожидание события, а не спитдля крошечных интервалов, а затем опрос.Например, pthread_cond_wait
, pthread_cond_timedwait
, sem_wait
, sem_timedwait
, select
, read
и т. Д. В зависимости от того, какую задачу выполняет ваш поток и как он синхронизируется с другими потоками и / или взаимодействует свнешний мир.