C ++ 11: есть ли какой-либо связанный с пользователем идентификатор потока? - PullRequest
1 голос
/ 14 апреля 2020

Я нахожусь на g ++ версии 9.2.1 20190827 (Red Hat 9.2.1-1) (G CC), работающей в Fedora версии 31 (Thirty One). Я связываюсь с -pthread.

cout << std::thread:get_id() и печатает числа типа 140737177954048. Однако GDB выводит номера потоков, такие как 2. GDB выводит какой-то другой идентификатор, который я тоже мог бы выводить? Использование заключается в том, чтобы поместить идентификаторы потока, генерирующего сообщение журнала, в файл журнала, чтобы впоследствии их можно было использовать для отладки, и эти 15-значные числа git, вероятно, слишком трудны для чтения и отслеживания, а также для принятия много места.

Моя альтернатива состояла в том, чтобы модуль журнала обнаруживал новые потоки и просто назначал последовательно увеличивающийся номер (atomic<unsigned int>, который я CAS). У рассматриваемого приложения есть только долгоживущие потоки, поэтому мне не нужно беспокоиться о почти бесконечном количестве короткоживущих потоков, накачивающих этот счетчик до нечитаемых уровней значений. Но если есть что-то лучше, дайте мне знать!

...