#include<pthread.h>
#include<stdio.h>
struct val{
int num1;
int num2;
};
//send a int to arg
void *text(void *arg)
{
int *p = (int *)arg;
printf("arg is %d\n",*p);
pthread_exit(NULL);
}
//send char to arg
void *text2(void *arg)
{
char *d = (char *)arg;
printf("arg is %s\n",arg);
pthread_exit(NULL);
}
//send a struct to arg
void *text3(void *arg)
{
struct val *v = (struct val *)arg;
printf("arg is v.num1:%d,v.num2:%d\n",v->num1,v->num2);
pthread_exit(NULL);
}
int main()
{
pthread_t pth;
char val[10] = "i am arg.";
int arry = 10;
pthread_create(&pth, NULL, text,(void *)&arry);
pthread_join(pth, NULL);
pthread_create(&pth, NULL, text2, (void *)val);
pthread_join(pth, NULL);
struct val v;
v.num1 = 0;
v.num2 = 1;
pthread_create(&pth, NULL, text3, (void *)&v); //一定要用&v因为结构体是值类型;
pthread_join(pth, NULL);
return 0;
}
每次传递的时候,都需要转化成void,接收之后,再由void转换成自己需要的类型!