Branch data Line data Source code
1 : : // Copyright (c) 2021-present 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 <util/exception.h>
8 : : #include <util/log.h>
9 : : #include <util/threadnames.h>
10 : :
11 : : #include <exception>
12 : : #include <functional>
13 : : #include <string>
14 : :
15 : 8058 : void util::TraceThread(std::string_view thread_name, std::function<void()> thread_func)
16 : : {
17 [ + - ]: 8058 : util::ThreadRename(std::string{thread_name});
18 : 8058 : try {
19 [ + - ]: 8058 : LogInfo("%s thread start", thread_name);
20 [ + - ]: 8058 : thread_func();
21 [ + - ]: 8058 : LogInfo("%s thread exit", thread_name);
22 [ - - ]: 0 : } catch (const std::exception& e) {
23 [ - - ]: 0 : PrintExceptionContinue(&e, thread_name);
24 : 0 : throw;
25 : 0 : } catch (...) {
26 [ - - ]: 0 : PrintExceptionContinue(nullptr, thread_name);
27 : 0 : throw;
28 : 0 : }
29 : 8058 : }
|