Я использую библиотеку boost :: thread (V1.44) для поддержки потоков в моем проекте C ++.
Пользователь должен иметь возможность приостановить выполнение цикла тестирования, который выполняется в своем собственном потоке, на неограниченное количество времени
и сможет возобновить его, когда пожелает.
Под Windows я решил это так
bool ContintueLoop(){
if(testLoopPaused){ //testLoopPaused can be set by the user via GUI elements
try{
boost::this_thread::interruptible_wait( 2147483648 ); //that's very ugly,
// somebody knows the right way to pause it for a unlimited time?
return true;
}
catch( boost::thread_interrupted& e ){ //when the user selects resume the
// the thread is interrupted and continues from here
testLoopPaused = false;
return true;
}
if( ... ) //test for other flags like endTestLoop etc.
....
}
Это работает без проблем, хотя было бы неплохо узнать правильное значение для неограниченного прерывания.
Я начал реализовывать версию моей программы для Linux, но столкнулся с проблемой
что я получаю ошибку компилятора
ошибка: interruptible_wait
не является членом boost::this_thread
Вопрос: Какой хороший способ приостановить повышение :: thread на неограниченное время (пока пользователь не решит возобновить его)
Большое спасибо