This is based on my own practical experience, running on a standard PC with a Super 7 actually, using a standard induction motor. The tool starts at a fixed position to the right (for a standard thread) of the work for each cut and accelerates up to feed rate when the controller gets a spindle index pulse. The spindle speed, monitored by M3, sets the feed rate accordingly before the cut starts. If you don’t go mad on DOC it threads just fine. At the end of the cut the tool pulls out, the feed decelerates, the tool is moved back to the start position, fed back in, and the next cut starts again timed by the index pulse. Like all CNC operation, this works through precise control of the acceleration and deceleration. Which is why I said it was a solved problem.
OK, later controllers (Mach4 I think, UCCNC, etc) also have a spindle encoder to monitor its speed to give real-time adjustment of the feedrate, but to reiterate, Mach3 threads well.