Два треда
До старта ждущего лочим мьютекс
Ждущий после запуска идёт в луп внутри которой упирается в ранее залоченый мьютекс и ложиться спать
В основном треде разлочим мьютекс что б дёрнуть
Второй тренд просыпается, работает, и должен разлочить мьютекс после
И не забываем залочить потом в основном треде, если нам ещё нужно дёргать второй тред, заодно сразу получаем синхронизацию - основной не сможет запустить второй тред, пока тот не различит мьютекс
А вообще conditional variable вроде лучше для такого кейса подходит