#include <stdio.h>
#include <pthread.h>
typedef struct _foo
{
int a,b,c;
}foo;
void printfoo(foo* fp)
{
if(fp)
printf("a:%d\nb:%d\nc:%d\n",fp->a,fp->b,fp->c);
else
printf("ptr is Null\n");
}
void* proc1(void* arg)
{
foo* p = (foo*)malloc(sizeof(foo));
p->a = 4;
p->b = 5;
p->c = 6;
pthread_exit((void*)p);
}
void* proc2(void* arg)
{
foo* p = (foo*)malloc(sizeof(foo));
p->a = 7;
p->b = 8;
p->c = 9;
pthread_exit(0);
}
int main()
{
foo f={1,2,3};
foo* pf=&f;
pthread_t pid1,pid2;
pthread_create(&pid1,NULL,proc1,NULL);
pthread_create(&pid2,NULL,proc2,NULL);
printfoo(pf);
pthread_join(pid1,(void*)&pf);
printfoo(pf);
pthread_join(pid2,(void*)&pf);
printfoo(pf);
return 0;
}