C 中的 pthread_equal()
该pthread_equal()函数用于检查两个线程是否相等。这将返回0或非零值。对于相等的线程,它将返回非零值,否则返回0。此函数的语法如下所示-
int pthread_equal (pthread_t th1, pthread_t th2);
现在让我们看看实际pthread_equal()操作。在第一种情况下,我们将检查自线程以检查结果。
示例
#include输出结果#include #include #include #include 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输出结果#include #include #include #include pthread_t sample_thread; void* my_thread_function1(void* ptr) { sample_thread = pthread_self(); //分配线程的id1 } 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