C 中的 pthread_equal()

该pthread_equal()函数用于检查两个线程是否相等。这将返回 0 或非零值。对于相等的线程,它将返回非零值,否则返回 0。此函数的语法如下所示 -

int pthread_equal (pthread_t th1, pthread_t th2);

现在让我们看看实际pthread_equal()操作。在第一种情况下,我们将检查自线程以检查结果。

示例

#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 将返回当前线程 id
      printf("Threads are equal\n");
   } else {
      printf("Threads are not equal\n");
   }
}
main() {
   pthread_t th1;
   sample_thread = th1; //将线程 th1 分配给另一个线程对象
   pthread_create(&th1, NULL, my_thread_function, NULL); //使用我的线程函数创建一个线程
   pthread_join(th1, NULL); //等待与主线程加入线程
}
输出结果
Threads are equal

现在我们将看到结果,如果我们在两个不同的线程之间进行比较。

示例

#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(); //分配线程的id 1
}
void* my_thread_function2(void* p) {
   if (pthread_equal(sample_thread, pthread_self())) { //pthread_self 将返回当前线程 id
      printf("Threads are equal\n");
   } else {
      printf("Threads are not equal\n");
   }
}

main() {
   pthread_t th1, th2;
   pthread_create(&th1, NULL, my_thread_function1, NULL); //使用 my_thread_function1 创建一个线程
   pthread_create(&th1, NULL, my_thread_function2, NULL); //使用 my_thread_function2 创建一个线程
   pthread_join(th1, NULL); //等待与主线程加入线程
   pthread_join(th2, NULL);
}
输出结果
Threads are not equal