/bitcoin/src/util/thread.cpp
Line | Count | Source |
1 | | // Copyright (c) 2021-2022 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 | | #include <util/thread.h> |
6 | | |
7 | | #include <logging.h> |
8 | | #include <util/exception.h> |
9 | | #include <util/threadnames.h> |
10 | | |
11 | | #include <exception> |
12 | | #include <functional> |
13 | | #include <string> |
14 | | #include <utility> |
15 | | |
16 | | void util::TraceThread(std::string_view thread_name, std::function<void()> thread_func) |
17 | 88.7k | { |
18 | 88.7k | util::ThreadRename(std::string{thread_name}); |
19 | 88.7k | try { |
20 | 88.7k | LogPrintf("%s thread start\n", thread_name); |
21 | 88.7k | thread_func(); |
22 | 88.7k | LogPrintf("%s thread exit\n", thread_name); |
23 | 88.7k | } catch (const std::exception& e) { |
24 | 0 | PrintExceptionContinue(&e, thread_name); |
25 | 0 | throw; |
26 | 0 | } catch (...) { |
27 | 0 | PrintExceptionContinue(nullptr, thread_name); |
28 | 0 | throw; |
29 | 0 | } |
30 | 88.7k | } |