I want to set the name of the current execution thread in C++ code; the underlying threading library is pthreads.
In case I have the std::thread handle of a thread, I can get the native pthreads handle using std::thread::native_handle
, then pass this to pthread_setname_np
to set the thread name.
auto t = std::thread(call_from_thread);
pthread_setname_np(t.native_handle(), my_thread_name.c_str());
But how can I set the thread name in cases where I do not have the std::thread
handle available. For example when the thread is started by some other library, and I am writing a callback that will be executed by that thread, can I write some code within the callback that sets a custom name for the thread executing it?
I know that I can get the current thread std::thread::id
object using std::this_thread::get_id
. Is there a way to convert this into a pthread native handle that can then be used to set the custom thread name?