Bitcoin ABC
0.32.4
P2P Digital Currency
src
util
signalinterrupt.h
Go to the documentation of this file.
1
// Copyright (c) 2023 The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#ifndef BITCOIN_UTIL_SIGNALINTERRUPT_H
6
#define BITCOIN_UTIL_SIGNALINTERRUPT_H
7
8
#ifdef WIN32
9
#include <condition_variable>
10
#include <mutex>
11
#else
12
#include <
util/tokenpipe.h
>
13
#endif
14
15
#include <atomic>
16
#include <cstdlib>
17
18
namespace
util
{
28
class
SignalInterrupt
{
29
public
:
30
SignalInterrupt
();
31
explicit
operator
bool()
const
;
32
void
operator()
();
33
void
reset
();
34
void
wait
();
35
36
private
:
37
std::atomic<bool>
m_flag
;
38
39
#ifndef WIN32
40
// On UNIX-like operating systems use the self-pipe trick.
41
TokenPipeEnd
m_pipe_r
;
42
TokenPipeEnd
m_pipe_w
;
43
#else
44
// On windows use a condition variable, since we don't have any signals
45
// there
46
std::mutex m_mutex;
47
std::condition_variable m_cv;
48
#endif
49
};
50
}
// namespace util
51
52
#endif
// BITCOIN_UTIL_SIGNALINTERRUPT_H
TokenPipeEnd
One end of a token pipe.
Definition:
tokenpipe.h:14
util::SignalInterrupt
Helper class that manages an interrupt flag, and allows a thread or signal to interrupt another threa...
Definition:
signalinterrupt.h:28
util::SignalInterrupt::wait
void wait()
Definition:
signalinterrupt.cpp:62
util::SignalInterrupt::m_pipe_r
TokenPipeEnd m_pipe_r
Definition:
signalinterrupt.h:41
util::SignalInterrupt::m_flag
std::atomic< bool > m_flag
Definition:
signalinterrupt.h:37
util::SignalInterrupt::SignalInterrupt
SignalInterrupt()
Definition:
signalinterrupt.cpp:18
util::SignalInterrupt::reset
void reset()
Definition:
signalinterrupt.cpp:33
util::SignalInterrupt::operator()
void operator()()
Definition:
signalinterrupt.cpp:42
util::SignalInterrupt::m_pipe_w
TokenPipeEnd m_pipe_w
Definition:
signalinterrupt.h:42
util
Definition:
blockstorage.h:42
tokenpipe.h
Generated on Thu Dec 4 2025 17:00:35 for Bitcoin ABC by
1.9.4