#include <ReusableThread.hpp>
Definition at line 25 of file ReusableThread.hpp.
◆ ReusableThread() [1/3]
dunedaq::utilities::ReusableThread::ReusableThread |
( |
int | threadid = 0 | ) |
|
|
explicit |
Definition at line 16 of file ReusableThread.cpp.
23{}
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 25 of file ReusableThread.cpp.
26{
28 std::this_thread::sleep_for(std::chrono::milliseconds(1));
29 }
32 std::this_thread::sleep_for(std::chrono::milliseconds(1));
34 }
36}
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 39 of file ReusableThread.cpp.
40{
42 char tname[16];
43 snprintf(tname, 16, "%s-%d", name.c_str(), tid);
44 auto handle =
m_thread.native_handle();
45 pthread_setname_np(handle, tname);
46
48}
std::atomic< bool > m_named
void set_thread_id(int tid)
◆ set_pin()
void dunedaq::utilities::ReusableThread::set_pin |
( |
int | cpuid | ) |
|
Definition at line 51 of file ReusableThread.cpp.
52{
53
56 }
57
58 auto handle =
m_thread.native_handle();
59 cpu_set_t cpuset;
60 CPU_ZERO(&cpuset);
61 CPU_SET(cpuid, &cpuset);
62 int rc = pthread_setaffinity_np(handle, sizeof(cpu_set_t), &cpuset);
63
64 if (rc != 0) {
65 ers::warning( ThreadingIssue(
ERS_HERE,
"Error calling pthread_setaffinity_np: " + std::to_string( rc ) ) );
66 }
67}
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 54 of file ReusableThread.hpp.
55 {
60 return true;
61 }
62 return false;
63 }
std::function< void()> m_task
◆ thread_worker()
void dunedaq::utilities::ReusableThread::thread_worker |
( |
| ) |
|
|
private |
Definition at line 70 of file ReusableThread.cpp.
71{
72 std::unique_lock<std::mutex> lock(
m_mtx);
73
79 } else {
81 }
82 }
83
85}
◆ 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: