On the other hand, if you're certain that you don't need more game loop cycles than 1000/sleep_time_ms, you can go right ahead.
This will save battery and allow the os schedhuler to give other processes more cpu time.
For most fullscreen applications, the performance is so important that the main thread is never put to sleep().
As for the timing bit, keep that entirely seperate of sleep() . Don't rely on sleep() to set behaviour at an intended speed. Create a multiplier to all moving and animating things, which is set to the estimated framerate (avoiding spikes by smoothing and precalculating) relative to a preset, "denominating" framerate.
Mrs. Pac man made for 30fpson my machine yields approx 1730fps, so i would multiply the speed of all graphical change by 30/1730.
If you're making a multiplayer game, keep in sync with the host at specific intervals, yielding the multiplier which can then be interpolated up or down gradually.
I hope I'm making sense.