#include <ReusableThread.hpp>
Definition at line 24 of file ReusableThread.hpp.
◆ ReusableThread() [1/3]
dunedaq::utilities::ReusableThread::ReusableThread |
( |
int | threadid = 0 | ) |
|
|
explicit |
Definition at line 17 of file ReusableThread.cpp.
24{
25}
std::atomic< bool > m_worker_done
std::atomic< bool > m_task_assigned
std::atomic< bool > m_thread_quit
std::atomic< bool > m_task_executed
◆ ~ReusableThread()
dunedaq::utilities::ReusableThread::~ReusableThread |
( |
| ) |
|
Definition at line 27 of file ReusableThread.cpp.
28{
30 std::this_thread::sleep_for(std::chrono::milliseconds(1));
31 }
34 std::this_thread::sleep_for(std::chrono::milliseconds(1));
36 }
38}
std::condition_variable m_cv
◆ ReusableThread() [2/3]
dunedaq::utilities::ReusableThread::ReusableThread |
( |
const ReusableThread & | | ) |
|
|
delete |
◆ ReusableThread() [3/3]
dunedaq::utilities::ReusableThread::ReusableThread |
( |
ReusableThread && | | ) |
|
|
delete |
◆ get_readiness()
bool dunedaq::utilities::ReusableThread::get_readiness |
( |
| ) |
const |
|
inline |
◆ get_thread_id()
int dunedaq::utilities::ReusableThread::get_thread_id |
( |
| ) |
const |
|
inline |
◆ operator=() [1/2]
◆ operator=() [2/2]
◆ set_name()
void dunedaq::utilities::ReusableThread::set_name |
( |
const std::string & | name, |
|
|
int | tid ) |
Definition at line 41 of file ReusableThread.cpp.
42{
44 char tname[16];
45 snprintf(tname, 16, "%s-%d", name.c_str(), tid);
46 auto handle =
m_thread.native_handle();
47 pthread_setname_np(handle, tname);
48
50}
std::atomic< bool > m_named
void set_thread_id(int tid)
◆ set_pin()
void dunedaq::utilities::ReusableThread::set_pin |
( |
int | cpuid | ) |
|
Definition at line 53 of file ReusableThread.cpp.
54{
55
58 }
59
60 auto handle =
m_thread.native_handle();
61 cpu_set_t cpuset;
62 CPU_ZERO(&cpuset);
63 CPU_SET(cpuid, &cpuset);
64 int rc = pthread_setaffinity_np(handle, sizeof(cpu_set_t), &cpuset);
65
66 if (rc != 0) {
67 ers::warning(ThreadingIssue(
ERS_HERE,
"Error calling pthread_setaffinity_np: " + std::to_string(rc)));
68 }
69}
void warning(const Issue &issue)
◆ set_thread_id()
void dunedaq::utilities::ReusableThread::set_thread_id |
( |
int | tid | ) |
|
|
inline |
◆ set_work()
template<typename Function , typename... Args>
bool dunedaq::utilities::ReusableThread::set_work |
( |
Function && | f, |
|
|
Args &&... | args ) |
|
inline |
Definition at line 53 of file ReusableThread.hpp.
54 {
59 return true;
60 }
61 return false;
62 }
std::function< void()> m_task
◆ thread_worker()
void dunedaq::utilities::ReusableThread::thread_worker |
( |
| ) |
|
|
private |
Definition at line 72 of file ReusableThread.cpp.
73{
74 std::unique_lock<std::mutex> lock(
m_mtx);
75
81 } else {
83 }
84 }
85
87}
◆ m_cv
std::condition_variable dunedaq::utilities::ReusableThread::m_cv |
|
private |
◆ m_mtx
std::mutex dunedaq::utilities::ReusableThread::m_mtx |
|
private |
◆ m_named
std::atomic<bool> dunedaq::utilities::ReusableThread::m_named |
|
private |
◆ m_task
std::function<void()> dunedaq::utilities::ReusableThread::m_task |
|
private |
◆ m_task_assigned
std::atomic<bool> dunedaq::utilities::ReusableThread::m_task_assigned |
|
private |
◆ m_task_executed
std::atomic<bool> dunedaq::utilities::ReusableThread::m_task_executed |
|
private |
◆ m_thread
std::thread dunedaq::utilities::ReusableThread::m_thread |
|
private |
◆ m_thread_id
int dunedaq::utilities::ReusableThread::m_thread_id |
|
private |
◆ m_thread_quit
std::atomic<bool> dunedaq::utilities::ReusableThread::m_thread_quit |
|
private |
◆ m_worker_done
std::atomic<bool> dunedaq::utilities::ReusableThread::m_worker_done |
|
private |
The documentation for this class was generated from the following files: