Bitcoin ABC 0.32.5
P2P Digital Currency
threadinterrupt.h
Go to the documentation of this file.
1// Copyright (c) 2016 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_THREADINTERRUPT_H
6#define BITCOIN_UTIL_THREADINTERRUPT_H
7
8#include <sync.h>
9#include <threadsafety.h>
10
11#include <atomic>
12#include <chrono>
13#include <condition_variable>
14
27public:
28 using Clock = std::chrono::steady_clock;
30 explicit operator bool() const;
32 void reset();
33 bool sleep_for(Clock::duration rel_time) EXCLUSIVE_LOCKS_REQUIRED(!mut);
34
35private:
36 std::condition_variable cond;
38 std::atomic<bool> flag;
39};
40
41#endif // BITCOIN_UTIL_THREADINTERRUPT_H
A helper class for interruptible sleeps.
std::chrono::steady_clock Clock
void operator()() EXCLUSIVE_LOCKS_REQUIRED(!mut)
std::atomic< bool > flag
bool sleep_for(Clock::duration rel_time) EXCLUSIVE_LOCKS_REQUIRED(!mut)
std::condition_variable cond
Implement std::hash so RCUPtr can be used as a key for maps or sets.
Definition: rcu.h:259
#define EXCLUSIVE_LOCKS_REQUIRED(...)
Definition: threadsafety.h:56