Я начал играть с повышение :: потоков, но я вроде застрял с этой проблемой:Использование исключений внутри подталкивание :: Тема
Я не понимаю, почему эта программа вылетает как в скором времени, когда исключение будет выброшено, потому что я пытаюсь поймать его в потоке. Я думал, что можно работать с исключениями, если обработка происходит в том же потоке, что и метание?
#include <boost/thread.hpp>
#include <exception>
using namespace std;
void doWork();
void thrower();
int main(int argc, char** argv){
boost::thread worker(doWork);
worker.join();
return 0;
}
void doWork(){
try{
thrower();
}
catch(const exception &e){
//handle exception
}
}
void thrower(){
// program terminates as soon as the exception is thrown
throw exception();
}
Дополнительная информация:
* Использование Mingw32
* Повышение v.1.44
* Связывание динамически с многопоточной длл отладки Версия нити Lib
Это не будет даже скомпилировать без соответствующих деклараций вперед и 'использование имен std'. Но если я их добавлю, он отлично работает на Ubuntu Linux w/Boost 1.40. –
извините, это уменьшенная версия кода, чтобы отобразить проблему. Вы связывали статически или динамически? – zitroneneis
Прекрасно работает для меня. Mac OS X с использованием Boost 1.44 динамически связана. –