Я хочу прервать поток, используя boost::thread interrupt(). У меня есть следующий код, который не вызывает исключение boost::thread_interrupted&:
int myClass::myFunction (arg1, arg2) try{
//some code here
do {
boost::this_thread::interruption_point();
//some other code here
} while (counter != 20000);
}catch (boost::thread_interrupted&) {
cout << "interrupted" << endl;
}
Если я заменю boost::this_thread::interruption_point() на boost::this_thread::sleep( boost::posix_time::milliseconds(150)) исключение будет брошено, и прерывание будет работать как надо.
Может кто-нибудь объяснить, почему boost::this_thread::interruption_point() не выдает ожидаемое исключение?