Я бы предпочел, чтобы такая задача выполнялась через cron / планировщик, так как она должна выполняться с заданными интервалами, а не в ответ на какое-либо событие среды. Таким образом, программа должна просто «делать» то, что ей нужно, а затем запускаться операционной системой по мере необходимости. Это также позволяет легко изменять частоту выполнения - просто измените расписание, вместо того, чтобы перестраивать приложение или предоставлять дополнительные возможности настройки.
Тем не менее, если бы вы действительно, действительно хотели сделать это таким образом, вы, вероятно, не спали бы целый час; Вы будете спать во множестве меньших временных интервалов (возможно, пять минут или что-то, что кажется подходящим) и иметь переменную, сохраняющую время «последнего запуска», чтобы вы знали, когда запускать снова.
Вызовы Sleep () обычно не будут исключительно точными, поскольку время, в течение которого поток спит; это зависит от того, какие задачи ожидают другие потоки и т. д.