GNU Radio Manual and C++ API Reference  v3.9.2.0-89-gb7c7001e
The Free & Open Software Radio Ecosystem
thread_group.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright (C) 2001-2003 William E. Kempf
4  * Copyright (C) 2007 Anthony Williams
5  * Copyright 2008,2009 Free Software Foundation, Inc.
6  *
7  * Distributed under the Boost Software License, Version 1.0. (See accompanying
8  * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9  */
10 
11 /*
12  * This was extracted from Boost 1.35.0 and fixed.
13  */
14 
15 #ifndef INCLUDED_THREAD_GROUP_H
16 #define INCLUDED_THREAD_GROUP_H
17 
18 #include <gnuradio/api.h>
19 #include <gnuradio/thread/thread.h>
20 #include <boost/any.hpp>
21 #include <boost/core/noncopyable.hpp>
22 #include <boost/function.hpp>
23 #include <boost/thread/shared_mutex.hpp>
24 #include <memory>
25 
26 namespace gr {
27 namespace thread {
28 
29 class GR_RUNTIME_API thread_group : public boost::noncopyable
30 {
31 public:
34 
35  boost::thread* create_thread(const boost::function0<void>& threadfunc);
36  void add_thread(std::unique_ptr<boost::thread> thrd);
38  void join_all();
39  void interrupt_all();
40  size_t size() const;
41 
42 private:
43  std::list<std::unique_ptr<boost::thread>> m_threads;
44  mutable boost::shared_mutex m_mutex;
45 };
46 
47 } /* namespace thread */
48 } /* namespace gr */
49 
50 #endif /* INCLUDED_THREAD_GROUP_H */
Definition: thread_group.h:30
void remove_thread(boost::thread *thrd)
boost::thread * create_thread(const boost::function0< void > &threadfunc)
void add_thread(std::unique_ptr< boost::thread > thrd)
#define GR_RUNTIME_API
Definition: gnuradio-runtime/include/gnuradio/api.h:18
boost::thread thread
Definition: thread.h:36
GNU Radio logging wrapper for log4cpp library (C++ port of log4j)
Definition: basic_block.h:29