id summary reporter owner description type status milestone component version severity resolution keywords cc 5351 interrupt a future get boost::unknown_exception qiaozhiqiang@… viboes " {{{ It may be a bug of the thread or future. in boost_1_46_0/doc/html/thread/synchronization.html it says: these Member functions: shared_future class template: Member function get() Member function wait() Member function timed_wait() and unique_future class template: Member function get() Member function wait() Member function timed_wait() Throws: ........ boost::thread_interrupted if the result associated with *this is not ready at the point of the call, and the [current] thread is interrupted. ............ but it throws boost::unknown_exception. and the [current] thread is interrupted. Should be the [working] thread is interrupted ? > > [Windows XP, VC++ 10, boost 1.46] > > When interrupt a future, the future.get() throw boost::unknown_exception, > > Not boost::thread_interrupted. > > > > Class boost::thread_interrupted should have a base class for > > current_exception_impl() to catch it ? or use BOOST_THROW_EXCEPTION to throw ? ////////// namespace boost { class thread_interrupted {}; } These function use [ throw thread_interrupted(); ] : this_thread ::interruption_point() // pthread / win32 this_thread::interruptible_wait() // win32 interruption_checker:: check_for_interruption()// pthread ///////////// // [Windows XP, VC++ 10, boost 1.46] #include #include #include using namespace boost::posix_time; using namespace boost; int foo() { this_thread::sleep(seconds(1000)); return 0; } int main(int argc, char** argv) { boost::packaged_task pt(&foo); boost::unique_future fi = pt.get_future(); boost::thread task(std::move(pt)); // launch task on a thread task.interrupt(); try { int v = fi.get(); } catch (boost::exception& exc) { std::cerr << ""ERROR: "" << boost::diagnostic_information(exc) << std::endl; } } > > > > // unknown_exception////////////////// > > ERROR: Throw in function (unknown) > > Dynamic exception type: class boost::exception_detail::clone_impl > boost::unknown_exception> > > std::exception::what: Unknown exception }}} " Patches closed Boost 1.50.0 thread Boost 1.46.0 Problem fixed thread interrupt future unknown_exception viboes