timeBeginPeriod() increases internal precision of Windows timer. From default of 10-20 (? - I cant't recall this without documentation) to values you passed to it. One of the side-effects: Windows start to switch concurrently running threads with precision of timeBeginPeriod too (technicaly this means that tBP sets threads time-slice).