Нет, вы не можете выйти из одного потока и приостановить или заблокировать другой поток. Это небезопасно.
То, что вы делаете, - это создаете способ для потоков блокировать себя, проверяя это.
Вы можете использовать atomi c логическая переменная, названная что-то вроде running
, и когда она была ложной, запускала небольшой l oop со сном.
Вы можете использовать условную переменную и мьютекс, защищающий логическое значение с именем running
, и когда оно было ложным, дождитесь уведомления об условии.
Вы можете заблокировать каждый рабочий поток на мьютексе. Если вместо этого thread_3 удерживает мьютекс, они не могут его принять и должны ждать, пока он не будет освобожден.