Game Development
Welcome to the game development community! This is a place to talk about and post anything related to the field of game development.
You say active waiting, but I wonder if you mean a busy-wait? Busy-waiting is generally bad, but don't forget that your main loop is just what executes when the OS decides to give your program some processor time. If you just check a stored timestamp vs the current clock at the start of each iteration, and then do nothing unless enough time has passed, control will go back to the OS for a bit, not the start of your next loop, so it's not a true busy-wait.
The original PC's hardware timer was... not great, and I believe that the situation only got worse over time. I understand the desire not to waste resources, but modern OSs are designed with the fear of not fully exploiting resources, so there's only so much you can do.