pthread_self () возвращает идентификатор потока.Пожалуйста, проверьте man-страницы для pthread_self и pthread_create.
man 3 pthread_self
man 3 pthread_create
Для pthread_create () первый аргумент имеет тип pthread_t.Ему присваивается идентификатор вновь созданного потока.Этот идентификатор используется для идентификации потока для других функций pthread.Абстрактный тип pthread_t зависит от реализации.
Перед возвратом, успешный вызов pthread_create () сохраняет идентификатор нового потока в буфере, на который указывает поток;этот идентификатор используется для ссылки на поток при последующих вызовах других функций pthread.
pthread_self возвращает тот же идентификатор, который pthread_create сохраняет в первом аргументе "thread"
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
pthread_t pthread_self(void);
В моей системе тип pthread_t имеет тип "unsigned long int"
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:typedef unsigned long int pthread_t;
В следующем примере значения, возвращаемые функциями pthread_self () и th1, одинаковы.
// main function:
pthread_t th1;
if(rc1 = pthread_create(&th1, NULL, &functionC1, NULL))
{
printf("Thread creation failed, return code %d, errno %d", rc1, errno);
}
printf("Printing thread id %lu\n", th1);
// Thread function:
void *functionC1(void *)
{
printf("In thread function Printing thread id %lu\n", pthread_self());
}
Output:
Printing thread id 140429554910976
In thread function Printing thread id 140429554910976
Пожалуйста, проверьте блог Tech Easy для получения дополнительной информации о потоках.