GNU Radio C++ API Reference 3.10.12.0
The Free & Open Software Radio Ecosystem
 
Loading...
Searching...
No Matches
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 * Copyright 2023 Marcus Müller
7 *
8 * Distributed under the Boost Software License, Version 1.0. (See accompanying
9 * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
10 */
11
12/*
13 * This was extracted from Boost 1.35.0 and fixed.
14 */
15
16#ifndef INCLUDED_THREAD_GROUP_H
17#define INCLUDED_THREAD_GROUP_H
18
19#include <gnuradio/api.h>
21
22#include <shared_mutex>
23#include <unordered_set>
24#include <functional>
25#include <memory>
26
27namespace gr {
28namespace thread {
29
31{
32public:
33 thread_group() = default;
34 ~thread_group() = default;
35 thread_group(const thread_group&) = delete;
37
38 boost::thread* create_thread(const std::function<void()>& threadfunc);
39 void add_thread(std::unique_ptr<boost::thread> thrd) noexcept;
40 void remove_thread(boost::thread* thrd) noexcept;
41 void join_all();
43 size_t size() const noexcept;
44
45private:
46 std::unordered_set<std::unique_ptr<boost::thread>> m_threads;
47 mutable std::shared_mutex m_mutex;
48};
49
50} /* namespace thread */
51} /* namespace gr */
52
53#endif /* INCLUDED_THREAD_GROUP_H */
Definition thread_group.h:31
void add_thread(std::unique_ptr< boost::thread > thrd) noexcept
thread_group & operator=(const thread_group &)=delete
thread_group(const thread_group &)=delete
void remove_thread(boost::thread *thrd) noexcept
boost::thread * create_thread(const std::function< void()> &threadfunc)
size_t size() const noexcept
#define GR_RUNTIME_API
Definition gnuradio-runtime/include/gnuradio/api.h:18
boost::thread thread
Definition thread.h:36
GNU Radio logging wrapper.
Definition basic_block.h:29
STL namespace.