| The Gaudi Framework v28r2p1 (f1a77ff4)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

Functions | Variables
compile_all.cpp File Reference

threadpool tutorial. More...

`#include <iostream>`
`#include <sstream>`
`#include <boost/thread/mutex.hpp>`
`#include <boost/bind.hpp>`
`#include <boost/threadpool.hpp>`
Include dependency graph for compile_all.cpp:

Go to the source code of this file.

## Functions
void | print (string text)
template<typename T >
string | to_string (T const &value)
void | task_1 ()
void | task_2 ()
void | task_3 ()
int | task_4 ()
void | task_with_parameter (int value)
bool | looped_task ()
int | task_int ()
void | fifo_pool_test ()
void | lifo_pool_test ()
void | prio_pool_test ()
void | future_test ()
int | main (int, char *const [])

## Variables
boost::mutex | m_io_monitor
int | loops = 0

## Detailed Description

threadpool tutorial.

This file contains a tutorial for the threadpool library.

Copyright (c) 2005-2006 Philipp Henkel

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

http://threadpool.sourceforge.net

Definition in file compile_all.cpp.

## Function Documentation

void fifo_pool_test | ( |  | ) |

Definition at line 94 of file compile_all.cpp.

95 {
96 pool tp;
97
98 tp.schedule(&task_1);
99 tp.schedule(boost::bind(task_with_parameter, 4));
100
101 if(!tp.empty())
102 {
103 tp.clear(); // remove all tasks -> no output in this test
104 }
105
106 size_t active_threads = tp.active();
107 size_t pending_threads = tp.pending();
108 size_t total_threads = tp.size();
109
110 size_t dummy = active_threads + pending_threads + total_threads;
111 dummy++;
112
113 tp.size_controller().resize(5);
114 tp.wait();
115 }
boost::threadpool::thread_pool::wait
void wait(size_t task_threshold=0) const
The current thread of execution is blocked until the sum of all active and pending tasks is equal or ...
Definition: pool.hpp:176
task_with_parameter
void task_with_parameter(int value)
Definition: compile_all.cpp:74
boost::threadpool::thread_pool::schedule
bool schedule(task_type const &task)
Schedules a task for asynchronous execution.
Definition: pool.hpp:130
boost::threadpool::thread_pool::empty
bool empty() const
Indicates that there are no tasks pending.
Definition: pool.hpp:166
boost::threadpool::thread_pool::pending
size_t pending() const
Returns the number of tasks which are ready for execution.
Definition: pool.hpp:148
pool
Definition: PoolClasses.h:7
boost::threadpool::thread_pool::active
size_t active() const
Returns the number of tasks which are currently executed.
Definition: pool.hpp:139
boost::threadpool::thread_pool::size_controller
size_controller_type size_controller()
Gets the size controller which manages the number of threads in the pool.
Definition: pool.hpp:111
task_1
void task_1()
Definition: compile_all.cpp:53
boost::threadpool::thread_pool::clear
void clear()
Removes all pending tasks from the pool&#39;s scheduler.
Definition: pool.hpp:156
boost::threadpool::thread_pool::size
size_t size() const
Gets the number of threads in the pool.
Definition: pool.hpp:120

void future_test | ( |  | ) |

Definition at line 134 of file compile_all.cpp.

135 {
136 fifo_pool tp(5);
137 future<int> fut = schedule(tp, &task_4);
138 int res = fut();
139 }
std::future
task_4
int task_4()
Definition: compile_all.cpp:68
boost::threadpool::schedule
disable_if< is_void< typename result_of< Function() >::type >, future< typename result_of< Function() >::type >>::type schedule(Pool &pool, const Function &task)
Definition: future.hpp:111
boost::threadpool::thread_pool
Thread pool.
Definition: pool.hpp:73

void lifo_pool_test | ( |  | ) |

Definition at line 117 of file compile_all.cpp.

118 {
119 lifo_pool tp;
120 tp.size_controller().resize(0);
121 schedule(tp, &task_1);
122 tp.size_controller().resize(10);
123 tp.wait();
124 }
boost::threadpool::thread_pool::wait
void wait(size_t task_threshold=0) const
The current thread of execution is blocked until the sum of all active and pending tasks is equal or ...
Definition: pool.hpp:176
boost::threadpool::schedule
disable_if< is_void< typename result_of< Function() >::type >, future< typename result_of< Function() >::type >>::type schedule(Pool &pool, const Function &task)
Definition: future.hpp:111
boost::threadpool::thread_pool::size_controller
size_controller_type size_controller()
Gets the size controller which manages the number of threads in the pool.
Definition: pool.hpp:111
task_1
void task_1()
Definition: compile_all.cpp:53
boost::threadpool::thread_pool
Thread pool.
Definition: pool.hpp:73

bool looped_task | ( |  | ) |

Definition at line 80 of file compile_all.cpp.

81 {
82 print(" looped_task()\n");
83 return ++loops < 5;
84 }
loops
int loops
Definition: compile_all.cpp:79
print
void print(string text)
Definition: compile_all.cpp:34

int main | ( | int | ,
|  | char * | const[]
| ) |  |

Definition at line 142 of file compile_all.cpp.

143 {
144 fifo_pool_test();
145 lifo_pool_test();
146 prio_pool_test();
147 future_test();
148 return 0;
149 }
lifo_pool_test
void lifo_pool_test()
Definition: compile_all.cpp:117
future_test
void future_test()
Definition: compile_all.cpp:134
prio_pool_test
void prio_pool_test()
Definition: compile_all.cpp:126
fifo_pool_test
void fifo_pool_test()
Definition: compile_all.cpp:94

void print | ( | string | text | ) |

Definition at line 34 of file compile_all.cpp.

35 {
36 boost::mutex::scoped_lock lock(m_io_monitor);
37 cout << text;
38 }
std::lock
T lock(T...args)
m_io_monitor
boost::mutex m_io_monitor
Definition: compile_all.cpp:32
std::cout

void prio_pool_test | ( |  | ) |

Definition at line 126 of file compile_all.cpp.

127 {
128 prio_pool tp(2);
129 schedule(tp, prio_task_func(1, &task_1));
130 schedule(tp, prio_task_func(10,&task_2));
131 }
boost::threadpool::schedule
disable_if< is_void< typename result_of< Function() >::type >, future< typename result_of< Function() >::type >>::type schedule(Pool &pool, const Function &task)
Definition: future.hpp:111
task_1
void task_1()
Definition: compile_all.cpp:53
boost::threadpool::thread_pool
Thread pool.
Definition: pool.hpp:73
task_2
void task_2()
Definition: compile_all.cpp:58
boost::threadpool::prio_task_func
Prioritized task function object.
Definition: task_adaptors.hpp:51

void task_1 | ( |  | ) |

Definition at line 53 of file compile_all.cpp.

54 {
55 print(" task_1()\n");
56 }
print
void print(string text)
Definition: compile_all.cpp:34

void task_2 | ( |  | ) |

Definition at line 58 of file compile_all.cpp.

59 {
60 print(" task_2()\n");
61 }
print
void print(string text)
Definition: compile_all.cpp:34

void task_3 | ( |  | ) |

Definition at line 63 of file compile_all.cpp.

64 {
65 print(" task_3()\n");
66 }
print
void print(string text)
Definition: compile_all.cpp:34

int task_4 | ( |  | ) |

Definition at line 68 of file compile_all.cpp.

69 {
70 print(" task_4()\n");
71 return 4;
72 }
print
void print(string text)
Definition: compile_all.cpp:34

int task_int | ( |  | ) |

Definition at line 87 of file compile_all.cpp.

88 {
89 print(" task_int()\n");
90 return 23;
91 }
print
void print(string text)
Definition: compile_all.cpp:34

void task_with_parameter | ( | int | value | ) |

Definition at line 74 of file compile_all.cpp.

75 {
76 print(" task_with_parameter(" + to_string(value) + ")\n");
77 }
print
void print(string text)
Definition: compile_all.cpp:34
to_string
string to_string(T const &value)
Definition: compile_all.cpp:41
template<typename T >

string to_string | ( | T const & | value | ) |

Definition at line 41 of file compile_all.cpp.

42 {
43 ostringstream ost;
44 ost << value;
45 ost.flush();
46 return ost.str();
47 }
std::ostringstream
STL class.
std::ostringstream::str
T str(T...args)
std::ostringstream::flush
T flush(T...args)

## Variable Documentation

int loops = 0

Definition at line 79 of file compile_all.cpp.

boost::mutex m_io_monitor

Definition at line 32 of file compile_all.cpp.