Bitcoin Core  22.99.0
P2P Digital Currency
thread.cpp
Go to the documentation of this file.
1 // Copyright (c) 2021 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/system.h>
9 #include <util/threadnames.h>
10 
11 #include <exception>
12 
13 void util::TraceThread(const char* thread_name, std::function<void()> thread_func)
14 {
15  util::ThreadRename(thread_name);
16  try {
17  LogPrintf("%s thread start\n", thread_name);
18  thread_func();
19  LogPrintf("%s thread exit\n", thread_name);
20  } catch (const std::exception& e) {
21  PrintExceptionContinue(&e, thread_name);
22  throw;
23  } catch (...) {
24  PrintExceptionContinue(nullptr, thread_name);
25  throw;
26  }
27 }
util::TraceThread
void TraceThread(const char *thread_name, std::function< void()> thread_func)
A wrapper for do-something-once thread functions.
Definition: thread.cpp:13
util::ThreadRename
void ThreadRename(std::string &&)
Rename a thread both in terms of an internal (in-memory) name as well as its system thread name.
Definition: threadnames.cpp:57
LogPrintf
#define LogPrintf(...)
Definition: logging.h:185
system.h
PrintExceptionContinue
void PrintExceptionContinue(const std::exception *pex, const char *pszThread)
Definition: system.cpp:779
threadnames.h
thread.h