|
|
Boost.Threadsthread_group |
Introduction
Header
Synopsis
Members
Example
The thread_group class provides a container for easy grouping of threads to simplify several common thread creation and management idioms.
All thread_group member functions are thread-safe, except destruction.
#include <boost/thread/thread.hpp>
namespace boost
{
class thread_group : boost::noncopyable
{
public:
thread_group();
~thread_group();
thread* create_thread(const boost::function0<void>& threadfunc);
void add_thread(thread* thrd);
void remove_thread(thread* thrd);
void join_all();
};
}
thread_group();
Effects: Constructs an empty thread_group container.
~thread_group();
Effects: Destroys each contained thread object. Destroys
*this.
Notes: Behavior is undefined if another thread references *this during the execution of the destructor.
thread* create_thread(const boost::function0<void>& threadfunc);
Effects: Creates a new thread object that executes threadfunc and adds it to the thread_group container object's list of managed thread objects.
Returns: Pointer to the newly created thread.
void add_thread(thread* thrd);
Effects: Adds thrd to the thread_group object's list of managed thread objects. The thrd object must have been allocated via operator new and will be deleted when the group is destroyed.
void remove_thread(thread* thrd);
Effects: Removes *this's list of managed
thread objects.
Throws: ? if thrd is not it *this's
list of managed thread objects.
void join_all();
Effects: Calls join() on each of the managed
thread objects.
#include <boost/thread/thread.hpp>
#include <iostream>
int count = 0;
boost::mutex mutex;
void increment_count()
{
boost::mutex::lock lock(mutex);
std::cout << "count = " << ++count << std::endl;
}
int main(int argc, char* argv[])
{
boost::thread_group threads;
for (int i = 0; i < 10; ++i)
threads.create_thread(&increment_count);
threads.join_all();
}
The output is:
count = 1 count = 2 count = 3 count = 4 count = 5 count = 6 count = 7 count = 8 count = 9 count = 10
Revised 05 November, 2001
© Copyright William E. Kempf 2001 all rights reserved.