1
// Copyright (C) 2012-2013 Vicente Botet
3
// Distributed under the Boost Software License, Version 1.0. (See accompanying
4
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
#define BOOST_THREAD_VERSION 4
7
#define BOOST_THREAD_USES_LOG
8
#define BOOST_THREAD_USES_LOG_THREAD_ID
10
#include <boost/thread/detail/log.hpp>
11
#include <boost/thread/future.hpp>
12
#include <boost/assert.hpp>
14
#if defined BOOST_THREAD_PROVIDES_FUTURE_UNWRAP
18
BOOST_THREAD_LOG << "P1" << BOOST_THREAD_END_LOG;
22
boost::future<int> p2()
24
BOOST_THREAD_LOG << "<P2" << BOOST_THREAD_END_LOG;
25
boost::future<int> f1 = boost::async(boost::launch::async, &p1);
26
BOOST_THREAD_LOG << "P2>" << BOOST_THREAD_END_LOG;
27
return boost::move(f1);
32
BOOST_THREAD_LOG << "<MAIN" << BOOST_THREAD_END_LOG;
35
boost::future<boost::future<int> > outer_future = boost::async(boost::launch::async, &p2);
36
boost::future<int> inner_future = outer_future.unwrap();
37
int i = inner_future.get();
38
BOOST_THREAD_LOG << "i= "<< i << "" << BOOST_THREAD_END_LOG;
40
catch (std::exception& ex)
42
BOOST_THREAD_LOG << "ERRORRRRR "<<ex.what() << "" << BOOST_THREAD_END_LOG;
47
BOOST_THREAD_LOG << " ERRORRRRR exception thrown" << BOOST_THREAD_END_LOG;
50
BOOST_THREAD_LOG << "MAIN>" << BOOST_THREAD_END_LOG;