• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // (C) Copyright 2009-2012 Anthony Williams
2 // (C) Copyright 2012 Vicente Botet
3 //
4 //  Distributed under the Boost Software License, Version 1.0. (See accompanying
5 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 
7 
8 #include <iostream>
9 #include <string>
10 #include <boost/thread/thread_only.hpp>
11 #include <boost/thread/thread_guard.hpp>
12 
do_something(int & i)13 void do_something(int& i)
14 {
15     ++i;
16 }
17 
18 struct func
19 {
20     int& i;
21 
funcfunc22     func(int& i_):i(i_){}
funcfunc23     func(func const& other):i(other.i){}
24 
operator ()func25     void operator()()
26     {
27         for(unsigned j=0;j<1000000;++j)
28         {
29             do_something(i);
30         }
31     }
32 
33 private:
34     func& operator=(func const&);
35 
36 };
37 
do_something_in_current_thread()38 void do_something_in_current_thread()
39 {}
40 
41 
f()42 void f()
43 {
44     int some_local_state;
45     func my_func(some_local_state);
46     boost::thread t(my_func);
47     boost::thread_guard<> g(t);
48 
49     do_something_in_current_thread();
50 }
51 
main()52 int main()
53 {
54     f();
55     return 0;
56 }
57 
58 
59