![]() |
Bitcoin Core 30.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 () | |
virtual | ~CThreadInterrupt ()=default |
virtual bool | interrupted () const |
Return true if operator()() has been called. More... | |
virtual | operator bool () const |
An alias for interrupted() . More... | |
virtual void | operator() () EXCLUSIVE_LOCKS_REQUIRED(!mut) |
Interrupt any sleeps. After this interrupted() will return true . More... | |
virtual void | reset () |
Reset to an non-interrupted state. More... | |
virtual bool | sleep_for (Clock::duration rel_time) EXCLUSIVE_LOCKS_REQUIRED(!mut) |
Sleep for the given duration. More... | |
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.
|
virtualdefault |
|
virtual |
Return true if operator()()
has been called.
Reimplemented in FuzzedThreadInterrupt.
Definition at line 12 of file threadinterrupt.cpp.
|
explicitvirtual |
An alias for interrupted()
.
Definition at line 17 of file threadinterrupt.cpp.
|
virtual |
Interrupt any sleeps. After this interrupted()
will return true
.
Definition at line 27 of file threadinterrupt.cpp.
|
virtual |
Reset to an non-interrupted state.
Definition at line 22 of file threadinterrupt.cpp.
|
virtual |
Sleep for the given duration.
true | The time passed. |
false | The sleep was interrupted. |
Reimplemented in FuzzedThreadInterrupt.
Definition at line 36 of file threadinterrupt.cpp.
|
private |
Definition at line 53 of file threadinterrupt.h.
|
private |
Definition at line 55 of file threadinterrupt.h.
|
private |
Definition at line 54 of file threadinterrupt.h.