Функция Sleep() неправильно синхронизируется в C

Я кодировал некоторые простые вещи, такие как операторы печати, но я хотел, чтобы мой процессор не работал, чтобы не было слишком много операторов печати одновременно. Я использовал библиотеку unistd.h и использовал функцию sleep(). Проблема, с которой я столкнулся, заключается в том, что когда я просил функцию сна спать менее одной секунды, например 0,9, он печатает такое же количество операторов, как если бы я вообще не использовал функцию sleep(). Это работает нормально, если я заставляю его спать больше одной секунды, но я не хочу спать одну секунду, я хочу меньше.

Спасибо, что читаете и / или помогаете.

1 ответ

Если вы читаете sleep На странице справки вы увидите, что это время в секундах в виде целого числа.

Если вы используете значение с плавающей запятой, когда ожидается целочисленное значение, компилятор урезает его. Например, значение с плавающей точкой 0.9 будет усечено до целого числа 0,

Так что вы делаете эффективно sleep(0),

Также на sleep Страница руководства (по крайней мере, для страницы руководства Linux) вы увидите ссылку на nanosleep функция

Другие вопросы по тегам