diff options
author | Andrej Rode <andrej.rode@ettus.com> | 2017-04-03 18:49:58 -0700 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2017-12-22 15:03:45 -0800 |
commit | 53795c74aead4e6021bc788b788f8ed5b4a0166d (patch) | |
tree | 45e4075f3d8ffdee7dff7c72dd665f5c5b0c746c /host/lib/deps/rpclib/include/rpc/detail/thread_group.h | |
parent | 6a12add1560545438e1bebc05efbafd05aace4f9 (diff) | |
download | uhd-53795c74aead4e6021bc788b788f8ed5b4a0166d.tar.gz uhd-53795c74aead4e6021bc788b788f8ed5b4a0166d.tar.bz2 uhd-53795c74aead4e6021bc788b788f8ed5b4a0166d.zip |
uhd: add cut-down rpclib source tree and import tool
Diffstat (limited to 'host/lib/deps/rpclib/include/rpc/detail/thread_group.h')
-rw-r--r-- | host/lib/deps/rpclib/include/rpc/detail/thread_group.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/host/lib/deps/rpclib/include/rpc/detail/thread_group.h b/host/lib/deps/rpclib/include/rpc/detail/thread_group.h new file mode 100644 index 000000000..8905a7150 --- /dev/null +++ b/host/lib/deps/rpclib/include/rpc/detail/thread_group.h @@ -0,0 +1,40 @@ +#pragma once + +#ifndef THREAD_GROUP_H_MQSLWGKD +#define THREAD_GROUP_H_MQSLWGKD + +#include <thread> +#include <vector> + +namespace rpc { +namespace detail { + +class thread_group { +public: + thread_group() {} + thread_group(thread_group const &) = delete; + + void create_threads(std::size_t thread_count, std::function<void()> func) { + for (std::size_t i = 0; i < thread_count; ++i) { + threads_.push_back(std::thread(func)); + } + } + + void join_all() { + for (auto &t : threads_) { + if (t.joinable()) { + t.join(); + } + } + } + + ~thread_group() { join_all(); } + +private: + std::vector<std::thread> threads_; +}; + +} /* detail */ +} /* rpc */ + +#endif /* end of include guard: THREAD_GROUP_H_MQSLWGKD */ |