1 // Copyright (C) 2014 Vicente Botet 2 // 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) 5 6 #include <boost/config.hpp> 7 #if ! defined BOOST_NO_CXX11_DECLTYPE 8 #define BOOST_RESULT_OF_USE_DECLTYPE 9 #endif 10 11 #define BOOST_THREAD_VERSION 4 12 #define BOOST_THREAD_PROVIDES_EXECUTORS 13 //#define BOOST_THREAD_USES_LOG 14 #define BOOST_THREAD_USES_LOG_THREAD_ID 15 #define BOOST_THREAD_QUEUE_DEPRECATE_OLD 16 17 #include <boost/thread/caller_context.hpp> 18 #include <boost/thread/executors/basic_thread_pool.hpp> 19 #include <boost/thread/executors/generic_executor_ref.hpp> 20 #include <string> 21 #include <iostream> 22 23 #include <boost/thread/caller_context.hpp> 24 25 default_executor()26boost::generic_executor_ref default_executor() 27 { 28 static boost::basic_thread_pool tp(4); 29 return boost::generic_executor_ref(tp); 30 } 31 p2()32void p2() 33 { 34 std::cout << BOOST_CONTEXTOF << std::endl; 35 boost::this_thread::sleep_for(boost::chrono::milliseconds(200)); 36 std::cout << BOOST_CONTEXTOF << std::endl; 37 } 38 39 p1()40void p1() 41 { 42 std::cout << BOOST_CONTEXTOF << std::endl; 43 boost::this_thread::sleep_for(boost::chrono::milliseconds(200)); 44 default_executor().submit(&p2); 45 boost::this_thread::sleep_for(boost::chrono::milliseconds(400)); 46 std::cout << BOOST_CONTEXTOF << std::endl; 47 } 48 main()49int main() 50 { 51 std::cout << BOOST_CONTEXTOF << std::endl; 52 53 default_executor().submit(&p1); 54 55 boost::this_thread::sleep_for(boost::chrono::seconds(5)); 56 57 std::cout << BOOST_CONTEXTOF << std::endl; 58 59 return 1; 60 61 } 62