pthread_equal() in C


The pthread_equal() function is used to check whether two threads are equal or not. This returns 0 or non-zero value. For equal threads, it will return non-zero, otherwise it returns 0. The syntax of this function is like below −

int pthread_equal (pthread_t th1, pthread_t th2);

Now let us see the pthread_equal() in action. In the first case, we will check the self-thread to check the result.

Example

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <pthread.h>
pthread_t sample_thread;
void* my_thread_function(void* p) {
   if (pthread_equal(sample_thread, pthread_self())) { //pthread_self will return current thread id
      printf("Threads are equal
");    } else {       printf("Threads are not equal
");    } } main() {    pthread_t th1;    sample_thread = th1; //assign the thread th1 to another thread object    pthread_create(&th1, NULL, my_thread_function, NULL); //create a thread using my thread function    pthread_join(th1, NULL); //wait for joining the thread with the main thread }

Output

Threads are equal

Now we will see the result, if we compare between two different threads.

Example

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <pthread.h>
pthread_t sample_thread;
void* my_thread_function1(void* ptr) {
   sample_thread = pthread_self(); //assign the id of the thread 1
}
void* my_thread_function2(void* p) {
   if (pthread_equal(sample_thread, pthread_self())) { //pthread_self will return current thread id
      printf("Threads are equal
");    } else {       printf("Threads are not equal
");    } } main() {    pthread_t th1, th2;    pthread_create(&th1, NULL, my_thread_function1, NULL); //create a thread using my_thread_function1    pthread_create(&th1, NULL, my_thread_function2, NULL); //create a thread using my_thread_function2    pthread_join(th1, NULL); //wait for joining the thread with the main thread    pthread_join(th2, NULL); }

Output

Threads are not equal

Updated on: 30-Jul-2019

181 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements