卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章21374本站已运行3413

在C语言中,pthread_equal()函数用于比较两个线程ID是否相等

在C语言中,pthread_equal()函数用于比较两个线程ID是否相等

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 will return current thread id
      printf("Threads are equal</p><p>");
   } else {
      printf("Threads are not equal</p><p>");
   }
}
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
}

输出

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(); //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</p><p>");
   } else {
      printf("Threads are not equal</p><p>");
   }
}

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);
}

输出

Threads are not equal
卓越飞翔博客
上一篇: 如何使用 C# 找到所有接近于零的唯一四元组?
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏