Bitcoin ABC 0.32.4
P2P Digital Currency
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
18namespace util {
29public:
31 explicit operator bool() const;
32 void operator()();
33 void reset();
34 void wait();
35
36private:
37 std::atomic<bool> m_flag;
38
39#ifndef WIN32
40 // On UNIX-like operating systems use the self-pipe trick.
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
One end of a token pipe.
Definition: tokenpipe.h:14
Helper class that manages an interrupt flag, and allows a thread or signal to interrupt another threa...
std::atomic< bool > m_flag