Bitcoin Core 28.99.0
P2P Digital Currency
thread.cpp
Go to the documentation of this file.
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
16void util::TraceThread(std::string_view thread_name, std::function<void()> thread_func)
17{
18 util::ThreadRename(std::string{thread_name});
19 try {
20 LogPrintf("%s thread start\n", thread_name);
21 thread_func();
22 LogPrintf("%s thread exit\n", thread_name);
23 } catch (const std::exception& e) {
24 PrintExceptionContinue(&e, thread_name);
25 throw;
26 } catch (...) {
27 PrintExceptionContinue(nullptr, thread_name);
28 throw;
29 }
30}
void PrintExceptionContinue(const std::exception *pex, std::string_view thread_name)
Definition: exception.cpp:36
#define LogPrintf(...)
Definition: logging.h:266
void ThreadRename(const 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
void TraceThread(std::string_view thread_name, std::function< void()> thread_func)
A wrapper for do-something-once thread functions.
Definition: thread.cpp:16