1 #ifndef BOOST_THREAD_DETAIL_THREAD_GROUP_HPP
2 #define BOOST_THREAD_DETAIL_THREAD_GROUP_HPP
3 // Distributed under the Boost Software License, Version 1.0. (See
4 // accompanying file LICENSE_1_0.txt or copy at
5 // http://www.boost.org/LICENSE_1_0.txt)
6 // (C) Copyright 2007-9 Anthony Williams
9 #include <boost/thread/shared_mutex.hpp>
10 #include <boost/thread/mutex.hpp>
12 #include <boost/config/abi_prefix.hpp>
16 #pragma warning(disable:4251)
24 thread_group(thread_group const&);
25 thread_group& operator=(thread_group const&);
30 for(std::list<thread*>::iterator it=threads.begin(),end=threads.end();
39 thread* create_thread(F threadfunc)
41 boost::lock_guard<shared_mutex> guard(m);
42 std::auto_ptr<thread> new_thread(new thread(threadfunc));
43 threads.push_back(new_thread.get());
44 return new_thread.release();
47 void add_thread(thread* thrd)
51 boost::lock_guard<shared_mutex> guard(m);
52 threads.push_back(thrd);
56 void remove_thread(thread* thrd)
58 boost::lock_guard<shared_mutex> guard(m);
59 std::list<thread*>::iterator const it=std::find(threads.begin(),threads.end(),thrd);
68 boost::shared_lock<shared_mutex> guard(m);
70 for(std::list<thread*>::iterator it=threads.begin(),end=threads.end();
80 boost::shared_lock<shared_mutex> guard(m);
82 for(std::list<thread*>::iterator it=threads.begin(),end=threads.end();
92 boost::shared_lock<shared_mutex> guard(m);
93 return threads.size();
97 std::list<thread*> threads;
98 mutable shared_mutex m;
106 #include <boost/config/abi_suffix.hpp>