Приостановка boost :: thread на неограниченное время

Я использую библиотеку 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 на неограниченное время (пока пользователь не решит возобновить его)

Большое спасибо

10
задан zitroneneis 16 December 2010 в 09:30
поделиться