Sometimes you don't know where you want to spend your CPU budget until you have more information.
Maybe I misunderstand you, but telling the thread to halt is surely a waste of those resources?
Because sometimes you need to sync the entire program state, or some subset of the state, to make measurements or to let disparate parts of the system interact