Я нахожусь на 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). У рассматриваемого приложения есть только долгоживущие потоки, поэтому мне не нужно беспокоиться о почти бесконечном количестве короткоживущих потоков, накачивающих этот счетчик до нечитаемых уровней значений. Но если есть что-то лучше, дайте мне знать!