Как распечатать pthread_t - PullRequest
       45

Как распечатать pthread_t

48 голосов
/ 19 ноября 2009

Искал, но не нашел удовлетворительного ответа.

Я знаю, что нет портативного способа напечатать pthread_t.

Как вы делаете это в своем приложении?

Обновление:

На самом деле мне не нужен pthread_t, но есть небольшой числовой идентификатор, идентифицирующий в отладочном сообщении разные потоки.

В моей системе (64-битный RHEL 5.3) он определен как unsigned long int, так что это большое число, и просто его печать занимает ценное место в строке отладки. Как GDB назначает короткие приливы?

Ответы [ 11 ]

0 голосов
/ 28 августа 2017

Просто дополнение к первому сообщению: используйте пользовательский тип объединения для хранения pthread_t:

union tid {
    pthread_t pthread_id;
    unsigned long converted_id;
};

Всякий раз, когда вы хотите напечатать pthread_t, создайте tid и назначьте tid.pthread_id = ..., затем напечатайте tid.converted_id.

...