Как извлечь ID потока из pthread_self() в целочисленную переменную? То есть что-то типа такого:
int a=pthread_self();
Или если этого сделать нельзя, то как вывести на экран ID потока при помощи cout. В стиле C это получается:
printf("thread id = %d\n", pthread_self());
а строка
cout<<pthread_self();
даёт ошибку
Тип ID потока свободен и может быть исполнен в любом исполнении разными компиляторами. Можно нарисовать как список байтов так :
// g++ -Wall -Wpedantic showthrid.cpp
# include <iostream>
typedef
union {
volatile pthread_t tid;
volatile uint8_t bid [sizeof(pthread_t)];
}
uid ;
int main(){
uid u ;
u.tid = pthread_self();
std::cout<<"pthread_self = "<<std::hex;
for(int i=sizeof(pthread_t);i;){
-- i ;
std::cout<<((unsigned int )u.bid[i])<<".";
}
std::cout<<std::endl;
std::cout<<" = "<<((size_t)u.tid)<<std::endl; }
$ ./a.out
pthread_self = 0.0.7f.3b.21.d0.4d.80.
= 7f3b21d04d80
И если вы найдёте численный тип с нужным размером, то на этот тип и кидайте значение. У меня размер 8 байт. То есть можно впихнуть в size_t.
pthread_self
возвращает дескриптор потока, не особо пригодный для печати и чтения. Получить числовой идентификатор потока можно так:
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include <unistd.h>
#include <sys/syscall.h>
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
long id;
errno = 0;
id = syscall(SYS_gettid);
if(0 != errno)
{
perror("syscall(SYS_gettid) failed");
abort();
}
fprintf(stdout, "thread id %li", id);
return 0;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я новичок и прошу помощиЕсть ThemesActivity в котором прописано динамическое изменение темы при выборе одного из radiobutton
Недавно начал учить Java, изучал if, решил вот такое написатьПри вводе правильного username и password, которые соответствуют adminUsername и adminPassword, всё-равно...
Есть массив элементов: у каждого есть координаты, bitmap и список анимаций (поворот, перемещение), который элемент должен выполнитьВсе в потоке...