Bitcoin ABC
0.26.3
P2P Digital Currency
Loading...
Searching...
No Matches
src
threadinterrupt.cpp
Go to the documentation of this file.
1
// Copyright (c) 2009-2010 Satoshi Nakamoto
2
// Copyright (c) 2009-2016 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 <
threadinterrupt.h
>
7
8
CThreadInterrupt::CThreadInterrupt
() : flag(
false
) {}
9
10
CThreadInterrupt::operator
bool
()
const
{
11
return
flag.load(std::memory_order_acquire);
12
}
13
14
void
CThreadInterrupt::reset
() {
15
flag
.store(
false
, std::memory_order_release);
16
}
17
18
void
CThreadInterrupt::operator()
() {
19
{
20
LOCK
(
mut
);
21
flag
.store(
true
, std::memory_order_release);
22
}
23
cond
.notify_all();
24
}
25
26
bool
CThreadInterrupt::sleep_for
(std::chrono::milliseconds
rel_time
) {
27
WAIT_LOCK
(
mut
, lock);
28
return
!
cond
.wait_for(lock,
rel_time
, [
this
]() {
29
return
flag
.load(std::memory_order_acquire);
30
});
31
}
32
33
bool
CThreadInterrupt::sleep_for
(std::chrono::seconds
rel_time
) {
34
return
sleep_for
(
35
std::chrono::duration_cast<std::chrono::milliseconds>(
rel_time
));
36
}
37
38
bool
CThreadInterrupt::sleep_for
(std::chrono::minutes
rel_time
) {
39
return
sleep_for
(
40
std::chrono::duration_cast<std::chrono::milliseconds>(
rel_time
));
41
}
CThreadInterrupt::operator()
void operator()() EXCLUSIVE_LOCKS_REQUIRED(!mut)
Definition
threadinterrupt.cpp:18
CThreadInterrupt::reset
void reset()
Definition
threadinterrupt.cpp:14
CThreadInterrupt::flag
std::atomic< bool > flag
Definition
threadinterrupt.h:36
CThreadInterrupt::mut
Mutex mut
Definition
threadinterrupt.h:35
CThreadInterrupt::sleep_for
bool sleep_for(std::chrono::milliseconds rel_time) EXCLUSIVE_LOCKS_REQUIRED(!mut)
Definition
threadinterrupt.cpp:26
CThreadInterrupt::cond
std::condition_variable cond
Definition
threadinterrupt.h:34
CThreadInterrupt::CThreadInterrupt
CThreadInterrupt()
Definition
threadinterrupt.cpp:8
GetRand
T GetRand(T nMax=std::numeric_limits< T >::max()) noexcept
Generate a uniform random integer of type T in the range [0..nMax) nMax defaults to std::numeric_limi...
Definition
random.h:85
WAIT_LOCK
#define WAIT_LOCK(cs, name)
Definition
sync.h:317
LOCK
#define LOCK(cs)
Definition
sync.h:306
threadinterrupt.h
Generated on Thu Dec 26 2024 02:38:06 for Bitcoin ABC by
1.9.8