Coverage Report

Created: 2026-07-08 14:14

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/tmp/bitcoin/src/util/threadinterrupt.cpp
Line
Count
Source
1
// Copyright (c) 2009-2010 Satoshi Nakamoto
2
// Copyright (c) 2009-present 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
6.36k
CThreadInterrupt::CThreadInterrupt() : flag(false) {}
11
12
bool CThreadInterrupt::interrupted() const
13
3.64M
{
14
3.64M
    return flag.load(std::memory_order_acquire);
15
3.64M
}
16
17
CThreadInterrupt::operator bool() const
18
2.47M
{
19
2.47M
    return interrupted();
20
2.47M
}
21
22
void CThreadInterrupt::reset()
23
1.14k
{
24
1.14k
    flag.store(false, std::memory_order_release);
25
1.14k
}
26
27
void CThreadInterrupt::operator()()
28
6.06k
{
29
6.06k
    {
30
6.06k
        LOCK(mut);
31
6.06k
        flag.store(true, std::memory_order_release);
32
6.06k
    }
33
6.06k
    cond.notify_all();
34
6.06k
}
35
36
bool CThreadInterrupt::sleep_for(Clock::duration rel_time)
37
5.81k
{
38
5.81k
    WAIT_LOCK(mut, lock);
39
11.6k
    return !cond.wait_for(lock, rel_time, [this]() { return flag.load(std::memory_order_acquire); });
40
5.81k
}