Подтвердить что ты не робот

Как назвать поток в Linux?

У меня многопоточное приложение Linux, написанное на C/С++. У меня есть выбранные имена для моих потоков. Чтобы помочь отладке, я бы хотел, чтобы эти имена были видны в GDB, "top" и т.д. Возможно ли это, и если да, то как?

(Существует много причин чтобы узнать имя потока. Сейчас я хочу знать, какой поток занимает 50% CPU (как сообщает "top",). И при отладке мне часто нужно переключиться на другой поток - в настоящее время мне нужно сделать "thread apply all bt", а затем просмотреть страницы вывода backtrace, чтобы найти нужный поток).

Решение для Windows находится здесь; что такое Linux?

4b9b3361

Ответ 1

Posix Threads?

Это, очевидно, не будет компилироваться, но это даст вам представление о том, куда идти на охоту. Я даже не уверен в его правильной команде PR_, но я думаю, что это так. Это было время...

  #include <sys/prctl.h>
  prctl(PR_SET_NAME,"<null> terminated string",0,0,0)

Ответ 2

Если вы используете библиотеку, например ACE, Thread имеет способ указать имя потока при создании нового потока.

BSD Unix также имеет вызов pthread_set_name_np.

В противном случае вы можете использовать prctl, как указано Fusspawn.