Если я хорошо понимаю:
- у вас есть поток, который отправляет данные (через сеть? Каков источник данных?)
- Вы замедляете посылку ритма с помощью сна
- полученные данные (на другом конце сети) могут быть задержаны намного больше (15 с вместо 10 с)
Если вышеописанное описывает, что вы делаете, у вашего дизайна есть несколько недостатков:
- сон очень неточен, он будет ждать не менее n секунд, но может быть и больше (особенно если ваша система загружена другими запущенными приложениями).
- сети вводят задержку буферизации, у вас нет гарантии, что ваши данные будут отправлены немедленно по сети (обычно это не так).
- Сама поездка вводит некоторую задержку (задержку), если ваш протокол ожидает ACK от принимающей стороны, вы должны принять это во внимание.
- Вы также должны учитывать время, необходимое для чтения / построения / извлечения данных для отправки и действительно отправки их по проводам. В зависимости от того, что вы делаете, это может быть незначительным или занять несколько секунд ...
Если вы дадите больше подробностей, вам будет легче диагностировать источник проблемы. sleep
как вы считаете (это действительно плохой таймер) или какая-то другая часть вашей системы.
Если у вас большой дамп, могу поспорить, что дополнительное время приходит от чтения данных и отправки их по проводам. Вы должны измерить время, потраченное на процесс отправки (время чтения до и после окончания отправки).
Если это действительно источник дополнительного времени, вам просто нужно удалить это время из следующего времени ожидания.
Пример: отправка предыдущего блока данных заняла 4 секунды, следующий блок - через 10 секунд, но поскольку вы уже использовали 4 секунды, вы просто ждете 6 секунд.
sleep
все еще довольно неточный таймер, и, очевидно, вышеописанный механизм не сработает, если время отправки больше, чем задержка между отправками, но вы поняли.
Исправление сон не так плох в среде Windows, как в Unix. Точность сна Windows составляет миллисекунду, точность сна Unix - секунда. Если вам не нужна высокоточная синхронизация (а если сеть задействована, высокоточная синхронизация вне досягаемости), то сон должен быть в порядке.