您的位置:首页 > 其它

【C】——如何用线程进行参数的传递

2013-10-27 22:46 204 查看
  直接上代码:

#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转换成自己需要的类型!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: