Sleep только гарантирует, что ваш процесс не будет выполняться в течение как минимум n миллисекунд, но не будет, что он будет спать точно n миллисекунд , Может быть, вы хотите настроить таймер? Или занятое ожидание (т.е. опрос QueryPerformanceCounter в цикле).
Я бы старался избегать этого подхода (ожидание занято), если только вам это не нужно, но вы сжигаете циклы и не позволяете ЦП переводиться на более низкие тактовые частоты (т.е. время работы от батареи)