diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2015-04-08 03:09:47 +0000 |
---|---|---|
committer | <> | 2015-05-05 14:37:32 +0000 |
commit | f2541bb90af059680aa7036f315f052175999355 (patch) | |
tree | a5b214744b256f07e1dc2bd7273035a7808c659f /libs/thread/example/future_fallback_to.cpp | |
parent | ed232fdd34968697a68783b3195b1da4226915b5 (diff) | |
download | boost-tarball-master.tar.gz |
Imported from /home/lorry/working-area/delta_boost-tarball/boost_1_58_0.tar.bz2.HEADboost_1_58_0master
Diffstat (limited to 'libs/thread/example/future_fallback_to.cpp')
-rw-r--r-- | libs/thread/example/future_fallback_to.cpp | 66 |
1 files changed, 60 insertions, 6 deletions
diff --git a/libs/thread/example/future_fallback_to.cpp b/libs/thread/example/future_fallback_to.cpp index d1a3c52fd..7301b0ae5 100644 --- a/libs/thread/example/future_fallback_to.cpp +++ b/libs/thread/example/future_fallback_to.cpp @@ -35,31 +35,83 @@ int p1() int main() { - const int number_of_tests = 100; + const int number_of_tests = 200; BOOST_THREAD_LOG << "<MAIN" << BOOST_THREAD_END_LOG; + + { + for (int i=0; i< number_of_tests; i++) + try + { + BOOST_THREAD_LOG << "" << BOOST_THREAD_END_LOG; + boost::future<int> f1 = boost::async(boost::launch::async, &p1); + BOOST_THREAD_LOG << "" << BOOST_THREAD_END_LOG; + f1.wait(); + BOOST_ASSERT(f1.get()==1); + BOOST_THREAD_LOG << "" << BOOST_THREAD_END_LOG; + } + catch (std::exception& ex) + { + std::cout << __FILE__ << "["<< __LINE__<<"] " << "ERRORRRRR "<<ex.what() << "" << std::endl; + BOOST_THREAD_LOG << "ERRORRRRR "<<ex.what() << "" << BOOST_THREAD_END_LOG; + return 1; + } + catch (...) + { + std::cout << __FILE__ << "["<< __LINE__<<"] " << " ERRORRRRR exception thrown" << std::endl; + BOOST_THREAD_LOG << " ERRORRRRR exception thrown" << BOOST_THREAD_END_LOG; + return 2; + } + } + { for (int i=0; i< number_of_tests; i++) try { - //boost::future<int> f1 = boost::async(boost::launch::async, &p1); BOOST_THREAD_LOG << "" << BOOST_THREAD_END_LOG; boost::future<int> f1 = boost::async(&p1); BOOST_THREAD_LOG << "" << BOOST_THREAD_END_LOG; boost::future<int> f2 = f1.fallback_to(-1); BOOST_THREAD_LOG << "" << BOOST_THREAD_END_LOG; f2.wait(); + //std::cout << __FILE__ << "["<< __LINE__<<"] " << std::endl; BOOST_ASSERT(f2.get()==1); + //std::cout << __FILE__ << "["<< __LINE__<<"] " << std::endl; + BOOST_THREAD_LOG << "" << BOOST_THREAD_END_LOG; + } + catch (std::exception& ex) + { + std::cout << __FILE__ << "["<< __LINE__<<"] " << "ERRORRRRR "<<ex.what() << "" << std::endl; + BOOST_THREAD_LOG << "ERRORRRRR "<<ex.what() << "" << BOOST_THREAD_END_LOG; + return 1; + } + catch (...) + { + std::cout << __FILE__ << "["<< __LINE__<<"] " << " ERRORRRRR exception thrown" << std::endl; + BOOST_THREAD_LOG << " ERRORRRRR exception thrown" << BOOST_THREAD_END_LOG; + return 2; + } + } + + { + for (int i=0; i< number_of_tests; i++) + try + { + BOOST_THREAD_LOG << "" << BOOST_THREAD_END_LOG; + boost::future<int> f1 = boost::async(boost::launch::async, &p1_ex); + BOOST_THREAD_LOG << "" << BOOST_THREAD_END_LOG; + f1.wait(); + BOOST_ASSERT(f1.get_or(-1)==-1); BOOST_THREAD_LOG << "" << BOOST_THREAD_END_LOG; } catch (std::exception& ex) { - std::cout << "ERRORRRRR "<<ex.what() << "" << std::endl; + std::cout << __FILE__ << "["<< __LINE__<<"] " << "ERRORRRRR "<<ex.what() << "" << std::endl; BOOST_THREAD_LOG << "ERRORRRRR "<<ex.what() << "" << BOOST_THREAD_END_LOG; return 1; } catch (...) { - std::cout << " ERRORRRRR exception thrown" << std::endl; + std::cout << __FILE__ << "["<< __LINE__<<"] " << " ERRORRRRR exception thrown" << std::endl; BOOST_THREAD_LOG << " ERRORRRRR exception thrown" << BOOST_THREAD_END_LOG; return 2; } @@ -75,18 +127,20 @@ int main() boost::future<int> f2 = f1.fallback_to(-1); BOOST_THREAD_LOG << "" << BOOST_THREAD_END_LOG; f2.wait(); + //std::cout << __FILE__ << "["<< __LINE__<<"] " << std::endl; BOOST_ASSERT(f2.get()==-1); + //std::cout << __FILE__ << "["<< __LINE__<<"] " << std::endl; BOOST_THREAD_LOG << "" << BOOST_THREAD_END_LOG; } catch (std::exception& ex) { - std::cout << "ERRORRRRR "<<ex.what() << "" << std::endl; + std::cout << __FILE__ << "["<< __LINE__<<"] " << "ERRORRRRR "<<ex.what() << "" << std::endl; BOOST_THREAD_LOG << "ERRORRRRR "<<ex.what() << "" << BOOST_THREAD_END_LOG; return 1; } catch (...) { - std::cout << " ERRORRRRR exception thrown" << std::endl; + std::cout << __FILE__ << "["<< __LINE__<<"] " << " ERRORRRRR exception thrown" << std::endl; BOOST_THREAD_LOG << " ERRORRRRR exception thrown" << BOOST_THREAD_END_LOG; return 2; } |