thread.cpp
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 }