А если примерно так, ставим тик каждую мс. В нем проверяем деление без остатка на 1000мс, если выходит без остатка то устанавливаем новый тик, а тот удаляем?
Я нормально владею английским для того чтобы прочитать небольшие технические записи. А полноценные книги по кодингу не осилю, и не считаю что это мне необходимо