Bitcoin Core 28.99.0
P2P Digital Currency
|
A helper class for interruptible sleeps. More...
#include <threadinterrupt.h>
Public Types | |
using | Clock = std::chrono::steady_clock |
Public Member Functions | |
CThreadInterrupt () | |
operator bool () const | |
void | operator() () EXCLUSIVE_LOCKS_REQUIRED(!mut) |
void | reset () |
bool | sleep_for (Clock::duration rel_time) EXCLUSIVE_LOCKS_REQUIRED(!mut) |
Private Attributes | |
std::condition_variable | cond |
Mutex | mut |
std::atomic< bool > | flag |
A helper class for interruptible sleeps.
Calling operator() will interrupt any current sleep, and after that point operator bool() will return true until reset.
This class should not be used in a signal handler. It uses thread synchronization primitives that are not safe to use with signals. If sending an interrupt from a signal handler is necessary, the SignalInterrupt class can be used instead.
Definition at line 26 of file threadinterrupt.h.
using CThreadInterrupt::Clock = std::chrono::steady_clock |
Definition at line 29 of file threadinterrupt.h.
CThreadInterrupt::CThreadInterrupt | ( | ) |
Definition at line 10 of file threadinterrupt.cpp.
|
explicit |
Definition at line 12 of file threadinterrupt.cpp.
void CThreadInterrupt::operator() | ( | ) |
Definition at line 22 of file threadinterrupt.cpp.
void CThreadInterrupt::reset | ( | ) |
bool CThreadInterrupt::sleep_for | ( | Clock::duration | rel_time | ) |
|
private |
Definition at line 37 of file threadinterrupt.h.
|
private |
Definition at line 39 of file threadinterrupt.h.
|
private |
Definition at line 38 of file threadinterrupt.h.