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 }
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:74
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:53
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 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 }
int task_4()
Definition: compile_all.cpp:68
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 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 }
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:53
bool looped_task ( )

Definition at line 80 of file compile_all.cpp.

81 {
82  print(" looped_task()\n");
83  return ++loops < 5;
84 }
int loops
Definition: compile_all.cpp:79
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 }
void lifo_pool_test()
void future_test()
void prio_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 }
T lock(T...args)
boost::mutex m_io_monitor
Definition: compile_all.cpp:32
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 }
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:53
void task_2()
Definition: compile_all.cpp:58
Prioritized task function object.
void task_1 ( )

Definition at line 53 of file compile_all.cpp.

54 {
55  print(" task_1()\n");
56 }
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 }
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 }
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 }
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 }
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 }
void print(string text)
Definition: compile_all.cpp:34
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 }
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.