Функция Sleep() неправильно синхронизируется в C
Я кодировал некоторые простые вещи, такие как операторы печати, но я хотел, чтобы мой процессор не работал, чтобы не было слишком много операторов печати одновременно. Я использовал библиотеку unistd.h и использовал функцию sleep(). Проблема, с которой я столкнулся, заключается в том, что когда я просил функцию сна спать менее одной секунды, например 0,9, он печатает такое же количество операторов, как если бы я вообще не использовал функцию sleep(). Это работает нормально, если я заставляю его спать больше одной секунды, но я не хочу спать одну секунду, я хочу меньше.
Спасибо, что читаете и / или помогаете.
1 ответ
Если вы читаете sleep
На странице справки вы увидите, что это время в секундах в виде целого числа.
Если вы используете значение с плавающей запятой, когда ожидается целочисленное значение, компилятор урезает его. Например, значение с плавающей точкой 0.9
будет усечено до целого числа 0
,
Так что вы делаете эффективно sleep(0)
,
Также на sleep
Страница руководства (по крайней мере, для страницы руководства Linux) вы увидите ссылку на nanosleep
функция