/Users/eugenesiegel/btc/bitcoin/src/util/threadinterrupt.cpp
| Line | Count | Source (jump to first uncovered line) | 
| 1 |  | // Copyright (c) 2009-2010 Satoshi Nakamoto | 
| 2 |  | // Copyright (c) 2009-2022 The Bitcoin Core developers | 
| 3 |  | // Distributed under the MIT software license, see the accompanying | 
| 4 |  | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | 
| 5 |  |  | 
| 6 |  | #include <util/threadinterrupt.h> | 
| 7 |  |  | 
| 8 |  | #include <sync.h> | 
| 9 |  |  | 
| 10 | 51.2k | CThreadInterrupt::CThreadInterrupt() : flag(false) {} | 
| 11 |  |  | 
| 12 |  | bool CThreadInterrupt::interrupted() const | 
| 13 | 0 | { | 
| 14 | 0 |     return flag.load(std::memory_order_acquire); | 
| 15 | 0 | } | 
| 16 |  |  | 
| 17 |  | CThreadInterrupt::operator bool() const | 
| 18 | 0 | { | 
| 19 | 0 |     return interrupted(); | 
| 20 | 0 | } | 
| 21 |  |  | 
| 22 |  | void CThreadInterrupt::reset() | 
| 23 | 0 | { | 
| 24 | 0 |     flag.store(false, std::memory_order_release); | 
| 25 | 0 | } | 
| 26 |  |  | 
| 27 |  | void CThreadInterrupt::operator()() | 
| 28 | 102k | { | 
| 29 | 102k |     { | 
| 30 | 102k |         LOCK(mut); | Line | Count | Source |  | 259 | 102k | #define LOCK(cs) UniqueLock UNIQUE_NAME(criticalblock)(MaybeCheckNotHeld(cs), #cs, __FILE__, __LINE__) | Line | Count | Source |  | 11 | 102k | #define UNIQUE_NAME(name) PASTE2(name, __COUNTER__) | Line | Count | Source |  | 9 | 102k | #define PASTE2(x, y) PASTE(x, y) | Line | Count | Source |  | 8 | 102k | #define PASTE(x, y) x ## y | 
 | 
 | 
 | 
 | 
| 31 | 102k |         flag.store(true, std::memory_order_release); | 
| 32 | 102k |     } | 
| 33 | 102k |     cond.notify_all(); | 
| 34 | 102k | } | 
| 35 |  |  | 
| 36 |  | bool CThreadInterrupt::sleep_for(Clock::duration rel_time) | 
| 37 | 0 | { | 
| 38 | 0 |     WAIT_LOCK(mut, lock); | Line | Count | Source |  | 265 | 0 | #define WAIT_LOCK(cs, name) UniqueLock name(LOCK_ARGS(cs)) | Line | Count | Source |  | 263 | 0 | #define LOCK_ARGS(cs) MaybeCheckNotHeld(cs), #cs, __FILE__, __LINE__ | 
 | 
 | 
| 39 | 0 |     return !cond.wait_for(lock, rel_time, [this]() { return flag.load(std::memory_order_acquire); }); | 
| 40 | 0 | } |