Branch data Line data Source code
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 : 174 : void util::TraceThread(std::string_view thread_name, std::function<void()> thread_func)
17 : : {
18 [ + - ]: 174 : util::ThreadRename(std::string{thread_name});
19 : 174 : try {
20 [ + - ]: 174 : LogPrintf("%s thread start\n", thread_name);
21 [ + - ]: 174 : thread_func();
22 [ + - ]: 174 : LogPrintf("%s thread exit\n", thread_name);
23 [ - - ]: 0 : } 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 : 174 : }
|