The Gaudi Framework  v29r0 (ff2e7097)
compile_all.cpp File Reference

threadpool tutorial. More...

#include <boost/bind.hpp>
#include <boost/thread/mutex.hpp>
#include <iostream>
#include <sstream>
#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 74 of file compile_all.cpp.

75 {
76  pool tp;
77 
78  tp.schedule( &task_1 );
79  tp.schedule( boost::bind( task_with_parameter, 4 ) );
80 
81  if ( !tp.empty() ) {
82  tp.clear(); // remove all tasks -> no output in this test
83  }
84 
85  size_t active_threads = tp.active();
86  size_t pending_threads = tp.pending();
87  size_t total_threads = tp.size();
88 
89  size_t dummy = active_threads + pending_threads + total_threads;
90  dummy++;
91 
92  tp.size_controller().resize( 5 );
93  tp.wait();
94 }
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
void task_with_parameter(int value)
Definition: compile_all.cpp:59
bool schedule(task_type const &task)
Schedules a task for asynchronous execution.
Definition: pool.hpp:130
bool empty() const
Indicates that there are no tasks pending.
Definition: pool.hpp:166
size_t pending() const
Returns the number of tasks which are ready for execution.
Definition: pool.hpp:148
size_t active() const
Returns the number of tasks which are currently executed.
Definition: pool.hpp:139
size_controller_type size_controller()
Gets the size controller which manages the number of threads in the pool.
Definition: pool.hpp:111
void task_1()
Definition: compile_all.cpp:47
void clear()
Removes all pending tasks from the pool&#39;s scheduler.
Definition: pool.hpp:156
size_t size() const
Gets the number of threads in the pool.
Definition: pool.hpp:120
void future_test ( )

Definition at line 112 of file compile_all.cpp.

113 {
114  fifo_pool tp( 5 );
115  future<int> fut = schedule( tp, &task_4 );
116  int res = fut();
117 }
int task_4()
Definition: compile_all.cpp:53
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
void lifo_pool_test ( )

Definition at line 96 of file compile_all.cpp.

97 {
98  lifo_pool tp;
99  tp.size_controller().resize( 0 );
100  schedule( tp, &task_1 );
101  tp.size_controller().resize( 10 );
102  tp.wait();
103 }
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
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
size_controller_type size_controller()
Gets the size controller which manages the number of threads in the pool.
Definition: pool.hpp:111
void task_1()
Definition: compile_all.cpp:47
bool looped_task ( )

Definition at line 62 of file compile_all.cpp.

63 {
64  print( " looped_task()\n" );
65  return ++loops < 5;
66 }
int loops
Definition: compile_all.cpp:61
void print(string text)
Definition: compile_all.cpp:30
int main ( int  ,
char *  const[] 
)

Definition at line 119 of file compile_all.cpp.

120 {
121  fifo_pool_test();
122  lifo_pool_test();
123  prio_pool_test();
124  future_test();
125  return 0;
126 }
void lifo_pool_test()
Definition: compile_all.cpp:96
void future_test()
void prio_pool_test()
void fifo_pool_test()
Definition: compile_all.cpp:74
void print ( string  text)

Definition at line 30 of file compile_all.cpp.

31 {
32  boost::mutex::scoped_lock lock( m_io_monitor );
33  cout << text;
34 }
T lock(T...args)
boost::mutex m_io_monitor
Definition: compile_all.cpp:28
void prio_pool_test ( )

Definition at line 105 of file compile_all.cpp.

106 {
107  prio_pool tp( 2 );
108  schedule( tp, prio_task_func( 1, &task_1 ) );
109  schedule( tp, prio_task_func( 10, &task_2 ) );
110 }
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
void task_1()
Definition: compile_all.cpp:47
void task_2()
Definition: compile_all.cpp:49
Prioritized task function object.
void task_1 ( )

Definition at line 47 of file compile_all.cpp.

47 { print( " task_1()\n" ); }
void print(string text)
Definition: compile_all.cpp:30
void task_2 ( )

Definition at line 49 of file compile_all.cpp.

49 { print( " task_2()\n" ); }
void print(string text)
Definition: compile_all.cpp:30
void task_3 ( )

Definition at line 51 of file compile_all.cpp.

51 { print( " task_3()\n" ); }
void print(string text)
Definition: compile_all.cpp:30
int task_4 ( )

Definition at line 53 of file compile_all.cpp.

54 {
55  print( " task_4()\n" );
56  return 4;
57 }
void print(string text)
Definition: compile_all.cpp:30
int task_int ( )

Definition at line 68 of file compile_all.cpp.

69 {
70  print( " task_int()\n" );
71  return 23;
72 }
void print(string text)
Definition: compile_all.cpp:30
void task_with_parameter ( int  value)

Definition at line 59 of file compile_all.cpp.

59 { print( " task_with_parameter(" + to_string( value ) + ")\n" ); }
void print(string text)
Definition: compile_all.cpp:30
string to_string(T const &value)
Definition: compile_all.cpp:37
template<typename T >
string to_string ( T const &  value)

Definition at line 37 of file compile_all.cpp.

38 {
39  ostringstream ost;
40  ost << value;
41  ost.flush();
42  return ost.str();
43 }
T flush(T...args)

Variable Documentation

int loops = 0

Definition at line 61 of file compile_all.cpp.

boost::mutex m_io_monitor

Definition at line 28 of file compile_all.cpp.