Если много потоков могут делать pause/wake, то конечно нужен.
А если один, то мьютекс передаваемый в wait() может никем никогда не использоваться.
Ну их как минимум два: один останавливающий, второй - останавливаемый.
И лучше сразу все делать правильно (никаких сложностей в этом нет), это сейчас поток один, а завтра их может быть уже 100500.
Насчет 2-х потоков не соглашусь.
Мьютекс тут совсем не обязателен, т.к. если pause выставлен в true из другого потока, не далее как на следущей итерации поток зайдет внутрь if(pause) и встанет в wait, до тех пор пока первый поток не вызовет resume().
Правильно сделать лучше, согласен, но тут эксперт англ. из 90-х забыл уточнить условия...
))
Он кстати вообще говорил, что "поток с мьютексом без мьютекса" нельзя использовать, т.к. "мьютекс может быть, а может и не быть". И вообще завтра может быть уже сегодня...)))
А тут и мьютекс и CV решил сразу нашлёпать...)))