Когда я жду события без сигнализации с помощью функции WaitForSingleObject, я обнаружил, что в некоторых случаях вызов вернет WAIT_TIMEOUT меньше, чем указанный период таймаута. Простое переключение на вызов с тайм-аутом, установленным на 1000 мс, я видел возврат вызова в периоды до 990 мс (работает на WinXP). Я использую QueryPerformanceCounter, чтобы получить независимое измерение времени в системном такте, поэтому я не думаю, что дрифт часов скорее всего будет ответом.
Такое поведение не представляет для меня каких-либо практических проблем, но я хотел бы лучше понять это. Похоже, что он работает примерно с разрешением таймера. Предоставляет ли Microsoft дополнительную информацию о точности этой функции? Должен ли я ожидать большей точности в Vista?