该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