/ src / util / thread.cpp
thread.cpp
 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  void 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  }