Я использую библиотеку 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-версию своей программы, но столкнулся с проблемой : я получаю ошибку компилятора
error:
interruptible_wait
не является членом] boost :: this_thread
Вопрос: Какой хороший способ приостановить boost :: thread на неограниченное время (пока пользователь не решит возобновить его)
Большое спасибо