![]() |
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.