gpt4 book ai didi

C: pthread_self() 和 pthread_t 变量是同一个吗?

转载 作者:行者123 更新时间:2023-11-30 20:27:28 24 4
gpt4 key购买 nike

这就是我想知道的:

如果我使用 pthread_create() 创建一个线程,然后从该线程调用 pthread_self(),该值是否与我在主线程中传递给 pthread_create 的 pthread_t 值匹配?

//pthread_t variable
pthread_t producer_thread = (pthread_t*)malloc(sizeof(pthread_t));;

//create the thread
pthread_create(producer_thread, NULL, producer, NULL);

printf("Pthread_t variable after creating thread says %d\n", producer_thread);

....

//function passed to thread
void producer(void *p){
printf("Pthread self says: %d\n", pthread_self());
}

最佳答案

pthread_self的返回类型是pthread_t,它基本上是一个非整数类型的指针。

因此,它正在打印其地址(类型转换为 int),而不是 pthread_t 结构。

您可以使用pthread_equal函数来检查这些pthread_t是否相同。意味着,在另一个线程中,使用

 printf("%d\n", pthread_equal(mythreadId, pthread_self()));

它应该打印一个非零数字,表明它们对应于同一线程。

如果它们不相同,那就是一个问题。

在生成的线程中打印mythreadId。它必须与main的pthread_t匹配。如果它们不同,那么就有问题。

关于C: pthread_self() 和 pthread_t 变量是同一个吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19673399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com