gpt4 book ai didi

c - 为什么不能将值直接传递给c中的线程

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:32 25 4
gpt4 key购买 nike

在 C 中使用

创建线程时
pthread_create(thread,attr,start_routine,arg)

为什么我们应该将参数转换为线程函数,使用 (void *) 并在线程函数中将其转换回原始类型..为什么不能直接传递值...?

 void * fun(void *a){
int x = (int)a;
printf("Helloword %d \n",x);
pthread_exit(NULL);
}

int main()
{
int a=9;
pthread_t t;
pthread_create(&t,NULL,fun,(void *)a);
pthread_exit(NULL);
return 1;
}

最佳答案

因为pthread_create函数的原型(prototype)调用了void*。这为开发人员提供了最大的灵 active ,可以将什么传递给函数。这样一来,只需要一个原型(prototype),而不是许多具有不同类型参数的不同原型(prototype)。

关于c - 为什么不能将值直接传递给c中的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24919071/

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