thread.cpp raw
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 void util::TraceThread(std::string_view thread_name, std::function<void()> thread_func)
16 {
17 util::ThreadRename(std::string{thread_name});
18 try {
19 LogInfo("%s thread start", thread_name);
20 thread_func();
21 LogInfo("%s thread exit", thread_name);
22 } catch (const std::exception& e) {
23 PrintExceptionContinue(&e, thread_name);
24 throw;
25 } catch (...) {
26 PrintExceptionContinue(nullptr, thread_name);
27 throw;
28 }
29 }
30