pthread_equal() en C con ejemplo

Requisito previo: subprocesamiento múltiple , pthread_self() en C con ejemplo

pthread_equal() = Esto compara dos hilos que son iguales o no. Esta función compara dos identificadores de subprocesos. Devuelve ‘0’ y valor distinto de cero. Si es igual, devuelve un valor distinto de cero; de lo contrario, devuelve 0.

Sintaxis:- int pthread_equal (pthread_t t1, pthread_t t2);

Primer método : – Comparar con hilo propio

// C program to demonstrate working of pthread_equal()
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <pthread.h>
  
pthread_t tmp_thread;
  
void* func_one(void* ptr)
{
    // in this field we can compare two thread
    // pthread_self gives a current thread id
    if (pthread_equal(tmp_thread, pthread_self())) {
        printf("equal\n");
    } else {
        printf("not equal\n");
    }
}
  
// driver code
int main()
{
    // thread one
    pthread_t thread_one;
  
    // assign the id of thread one in temporary
    // thread which is global declared   r
    tmp_thread = thread_one;
  
    // create a thread
    pthread_create(&thread_one, NULL, func_one, NULL);
  
    // wait for thread
    pthread_join(thread_one, NULL);
}

Producción:

equal

Segundo método : – Comparar con otro hilo

// C program to demonstrate working of pthread_equal()
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <pthread.h>
  
// global declared pthread_t variable
pthread_t tmp_thread;
  
void* func_one(void* ptr)
{
    tmp_thread = pthread_self(); // assign the id of thread one in
    // temporary thread which is global declared
}
  
void* func_two(void* ptr)
{
    pthread_t thread_two = pthread_self();
  
    // compare two thread
    if (pthread_equal(tmp_thread, thread_two)) {
        printf("equal\n");
    } else {
        printf("not equal\n");
    }
}
  
int main()
{
    pthread_t thread_one, thread_two;
  
    // creating thread one
    pthread_create(&thread_one, NULL, func_one, NULL);
  
    // creating thread two
    pthread_create(&thread_two, NULL, func_two, NULL);
  
    // wait for thread one
    pthread_join(thread_one, NULL);
  
    // wait for thread two
    pthread_join(thread_two, NULL);
}

Producción:

not equal

Este artículo es una contribución de Devanshu Agarwal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *