1 // Copyright (C) 2012-2013 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 8 #define BOOST_THREAD_VERSION 5 9 //#define BOOST_THREAD_USES_LOG 10 #define BOOST_THREAD_USES_LOG_THREAD_ID 11 #define BOOST_THREAD_QUEUE_DEPRECATE_OLD 12 #if ! defined BOOST_NO_CXX11_DECLTYPE 13 #define BOOST_RESULT_OF_USE_DECLTYPE 14 #endif 15 16 #include <boost/thread/detail/log.hpp> 17 #include <boost/thread/executors/basic_thread_pool.hpp> 18 #include <boost/thread/thread_only.hpp> 19 #include <boost/assert.hpp> 20 #include <string> 21 22 #ifdef BOOST_MSVC 23 #pragma warning(disable: 4127) // conditional expression is constant 24 #endif 25 p1()26void p1() 27 { 28 BOOST_THREAD_LOG 29 << boost::this_thread::get_id() << " P1" << BOOST_THREAD_END_LOG; 30 } 31 p2()32void p2() 33 { 34 BOOST_THREAD_LOG 35 << boost::this_thread::get_id() << " P2" << BOOST_THREAD_END_LOG; 36 } 37 submit_some(boost::basic_thread_pool & tp)38void submit_some(boost::basic_thread_pool& tp) { 39 tp.submit(&p1); 40 tp.submit(&p2); 41 tp.submit(&p1); 42 tp.submit(&p2); 43 tp.submit(&p1); 44 tp.submit(&p2); 45 tp.submit(&p1); 46 tp.submit(&p2); 47 tp.submit(&p1); 48 tp.submit(&p2); 49 } 50 51 main()52int main() 53 { 54 BOOST_THREAD_LOG 55 << boost::this_thread::get_id() << " <MAIN" << BOOST_THREAD_END_LOG; 56 { 57 try 58 { 59 boost::basic_thread_pool tp; 60 submit_some(tp); 61 } 62 catch (std::exception& ex) 63 { 64 BOOST_THREAD_LOG 65 << "ERRORRRRR " << ex.what() << "" << BOOST_THREAD_END_LOG; 66 return 1; 67 } 68 catch (...) 69 { 70 BOOST_THREAD_LOG 71 << " ERRORRRRR exception thrown" << BOOST_THREAD_END_LOG; 72 return 2; 73 } 74 } 75 BOOST_THREAD_LOG 76 << boost::this_thread::get_id() << "MAIN>" << BOOST_THREAD_END_LOG; 77 return 0; 78 } 79