получение имени потока из идентификатора потока с помощью posix api - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть требование, что я должен получить имя потока из идентификатора потока или, если это невозможно, как получить имя потока.Здесь я не создаю тему.Я создаю библиотеку, и эта библиотека используется приложением, и код библиотеки будет выполняться в контексте потока приложения, я хочу напечатать имя потока в журнале консоли, чтобы знать, что журнал передает этот конкретный поток.Это должно быть достигнуто с помощью posix api, чтобы он был переносимым.

Заранее благодарим всех за ваши входные данные

Ответы [ 4 ]

2 голосов
/ 22 февраля 2011

Нет такого понятия . Но есть информация помимо идентификатора потока , которая может быть полезна для добавления в ваш журнал, такая как время вызова, имя файла исходного кода и номер строки , где был выполнен вызов.

1 голос
/ 22 февраля 2011

Насколько я знаю, у потоков posix нет имен, но вы можете использовать TLS для хранения имени.См. здесь для примера (не со строками).

0 голосов
/ 22 марта 2019

Мне кажется, pthread_getname_np() и pthread_setname_np() в pthread.h, чтобы получить и установить отображаемое имя потока, соответственно.Тем не менее, он окружен условными выражениями, предполагающими, что это нестандартное расширение GNU.

Возможно, вы захотите изучить pthread.h, с которым вы компилируете, и посмотреть, определены ли функции.Если ваш код должен быть переносимым, обязательно включите эти вызовы в условные выражения.

0 голосов
/ 22 февраля 2011

Нет API POSIX для присоединения имени к теме.

В Linux вы можете сделать prctl(PR_SET_NAME, ...). Смотри man prctl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...