]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/thread/example/user_scheduler.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / thread / example / user_scheduler.cpp
1 // Copyright (C) 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 4
9 //#define BOOST_THREAD_USES_LOG
10 #define BOOST_THREAD_USES_LOG_THREAD_ID
11 #if ! defined BOOST_NO_CXX11_DECLTYPE
12 #define BOOST_RESULT_OF_USE_DECLTYPE
13 #endif
14 #include <boost/thread/detail/log.hpp>
15 #include <boost/thread/executors/loop_executor.hpp>
16 #include <boost/assert.hpp>
17 #include <boost/thread/thread_only.hpp>
18 #include <string>
19
20 #ifdef BOOST_MSVC
21 #pragma warning(disable: 4127) // conditional expression is constant
22 #endif
23
24 void p1()
25 {
26 BOOST_THREAD_LOG
27 << boost::this_thread::get_id() << " P1" << BOOST_THREAD_END_LOG;
28 }
29
30 void p2()
31 {
32 BOOST_THREAD_LOG
33 << boost::this_thread::get_id() << " P2" << BOOST_THREAD_END_LOG;
34 }
35
36 void submit_some(boost::loop_executor& tp) {
37 tp.submit(&p1);
38 tp.submit(&p2);
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 }
48
49 int main()
50 {
51 BOOST_THREAD_LOG
52 << boost::this_thread::get_id() << " <MAIN" << BOOST_THREAD_END_LOG;
53 {
54 try
55 {
56 boost::loop_executor tp;
57 submit_some(tp);
58 tp.run_queued_closures();
59 submit_some(tp);
60 tp.run_queued_closures();
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
76 BOOST_THREAD_LOG
77 << boost::this_thread::get_id() << "MAIN>" << BOOST_THREAD_END_LOG;
78 return 0;
79 }