mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 12:32:48 +01:00
2da9982e55
aaaaad6ac95b402fe18d019d67897ced6b316ee0 scripted-diff: Bump copyright of files changed in 2019 (MarcoFalke)
Pull request description:
ACKs for top commit:
practicalswift:
ACK aaaaad6ac95b402fe18d019d67897ced6b316ee0
promag:
ACK aaaaad6ac95b402fe18d019d67897ced6b316ee0 🎉
fanquake:
ACK aaaaad6ac95b402fe18d019d67897ced6b316ee0 - going to merge this now because the year is over and conflicts are minimal.
Tree-SHA512: 58cb1f53bc4c1395b2766f36fabc7e2332e213780a802762fff0afd59468dad0c3265f553714d761c7a2c44ff90f7dc250f04458f4b2eb8eef8b94f8c9891321
36 lines
911 B
C++
36 lines
911 B
C++
// Copyright (c) 2016-2019 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_THREADINTERRUPT_H
|
|
#define BITCOIN_THREADINTERRUPT_H
|
|
|
|
#include <sync.h>
|
|
|
|
#include <atomic>
|
|
#include <chrono>
|
|
#include <condition_variable>
|
|
|
|
/*
|
|
A helper class for interruptible sleeps. Calling operator() will interrupt
|
|
any current sleep, and after that point operator bool() will return true
|
|
until reset.
|
|
*/
|
|
class CThreadInterrupt
|
|
{
|
|
public:
|
|
using Clock = std::chrono::steady_clock;
|
|
CThreadInterrupt();
|
|
explicit operator bool() const;
|
|
void operator()();
|
|
void reset();
|
|
bool sleep_for(Clock::duration rel_time) EXCLUSIVE_LOCKS_REQUIRED(!mut);
|
|
|
|
private:
|
|
std::condition_variable cond;
|
|
Mutex mut;
|
|
std::atomic<bool> flag;
|
|
};
|
|
|
|
#endif //BITCOIN_THREADINTERRUPT_H
|