Для этой цели вы можете использовать мьютексы и условные переменные.
Чтобы указать другому потоку сделать паузу:
Блокировка мьютекса.
Установить для общей переменной pause
значение true.
Отключить мьютекс.
Чтобы проверить, нужно ли вам сделать паузу:
Блокировка мьютекса.
Убедитесь, что для переменной pause
установлено значение true.
Если нет, отпустите мьютекс и продолжайте.
Если это так, заблокируйте переменную условия и перейдите к шагу 2.
Чтобы приостановить поток:
Блокировка мьютекса.
Установите для переменной pause
значение false.
Трансляция переменной условия.
Отключить мьютекс.
Но я должен отметить, что это почти наверняка не разумно. Нет никаких причин, по которым вам стоит приостановить поток. Ваша внешняя проблема, вероятно, что-то вроде остановки процесса от выполнения работы определенного типа. Это должно быть сделано, приказывая потокам выполнять другую работу, а не мешая им выполнять любую работу.