命名由库衍生的线程

Name a thread spun off by a library

情况是这样的:程序启动的某个时候初始化了第三方库。初始化例程生成一个线程。最好为该线程命名。显而易见的方法似乎不可用(库 API 中似乎没有提供命名线程或获取其 pthread id 的规定;不过我们可以有一个 TID)。那么,我们怎样才能以最少的麻烦命名这个另一个线程呢?

一个可行的解决方案如下:

pthread_setname_np(pthread_self(), "SpunOffName");
init_the_library(...);
pthread_setname_np(pthread_self(), "OriginalName");

我们只是重命名主线程,该名称由库衍生的任何线程继承。然后我们将主线程重命名回其原始名称(或我们想要的任何其他名称)。