diff options
Diffstat (limited to 'libs/thread/test/sync/futures/shared_future/then_pass.cpp')
-rw-r--r-- | libs/thread/test/sync/futures/shared_future/then_pass.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/libs/thread/test/sync/futures/shared_future/then_pass.cpp b/libs/thread/test/sync/futures/shared_future/then_pass.cpp index 4739135bf..b7d95bc66 100644 --- a/libs/thread/test/sync/futures/shared_future/then_pass.cpp +++ b/libs/thread/test/sync/futures/shared_future/then_pass.cpp @@ -75,6 +75,30 @@ int main() { boost::shared_future<int> f1 = boost::async(boost::launch::async, &p1).share(); BOOST_TEST(f1.valid()); + boost::future<int> f2 = f1.then(&p2); + boost::future<int> f3 = f1.then(&p2); + BOOST_TEST(f2.valid()); + BOOST_TEST(f3.valid()); + try + { + BOOST_TEST(f2.get()==2); + BOOST_TEST(f3.get()==2); + } + catch (std::exception& ex) + { + BOOST_THREAD_LOG << "ERRORRRRR "<<ex.what() << "" << BOOST_THREAD_END_LOG; + BOOST_TEST(false); + } + catch (...) + { + BOOST_THREAD_LOG << " ERRORRRRR exception thrown" << BOOST_THREAD_END_LOG; + BOOST_TEST(false); + } + } + BOOST_THREAD_LOG << BOOST_THREAD_END_LOG; + { + boost::shared_future<int> f1 = boost::async(boost::launch::async, &p1).share(); + BOOST_TEST(f1.valid()); boost::future<void> f2 = f1.then(&p3); BOOST_TEST(f2.valid()); try |