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 #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 LogInfo("%s thread start", thread_name); 21 thread_func(); 22 LogInfo("%s thread exit", 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 }