Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

383
Visualizações
¿Cómo obtener la identificación del subproceso de un pthread en el programa linux c?

En un programa Linux C, ¿cómo imprimo la identificación del hilo de un hilo creado por la biblioteca pthread? Por ejemplo, cómo podemos obtener el pid de un proceso mediante getpid() .

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

¿Qué? La persona preguntó por Linux específico y el equivalente de getpid(). Ni BSD ni Apple. La respuesta es gettid() y devuelve un tipo integral. Tendrás que llamarlo usando syscall(), así:

 #include <sys/types.h> #include <unistd.h> #include <sys/syscall.h> .... pid_t x = syscall(__NR_gettid);

Si bien esto puede no ser portátil para sistemas que no sean Linux, el threadid es directamente comparable y muy rápido de adquirir. Se puede imprimir (como para LOG) como un número entero normal.

over 4 years ago · Santiago Trujillo Relatório

0

La función pthread_self() dará la identificación del hilo del hilo actual.

 pthread_t pthread_self(void);

La función pthread_self() devuelve el identificador Pthread del hilo de llamada. La función pthread_self() NO devuelve el hilo integral del hilo que llama. Debe usar pthread_getthreadid_np() para devolver un identificador integral para el hilo.

NOTA:

 pthread_id_np_t tid; tid = pthread_getthreadid_np();

es significativamente más rápido que estas llamadas, pero proporciona el mismo comportamiento.

 pthread_id_np_t tid; pthread_t self; self = pthread_self(); pthread_getunique_np(&self, &tid);
over 4 years ago · Santiago Trujillo Relatório

0

Como se señaló en otras respuestas, pthreads no define una forma independiente de la plataforma para recuperar una ID de hilo integral.

En los sistemas Linux, puede obtener la identificación del subproceso de la siguiente manera:

 #include <sys/types.h> pid_t tid = gettid();

En muchas plataformas basadas en BSD, esta respuesta https://stackoverflow.com/a/21206357/316487 brinda una forma no portátil.

Sin embargo, si la razón por la que cree que necesita una ID de subproceso es saber si está ejecutando en el mismo subproceso o en uno diferente a otro subproceso que controla, puede encontrar alguna utilidad en este enfoque.

 static pthread_t threadA; // On thread A... threadA = pthread_self(); // On thread B... pthread_t threadB = pthread_self(); if (pthread_equal(threadA, threadB)) printf("Thread B is same as thread A.\n"); else printf("Thread B is NOT same as thread A.\n");

Si solo necesita saber si está en el hilo principal, hay formas adicionales, documentadas en las respuestas a esta pregunta, ¿cómo puedo saber si pthread_self es el (primer) hilo principal en el proceso? .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda