当前位置: 技术问答>linux和unix
pthread_join的第二个参数怎么使用?
来源: 互联网 发布时间:2016-06-08
本文导语: 请给一个具体的例子和输出。谢谢。 | #include #include void thread1(char s[]) { printf("This is a pthread1.n"); printf("%sn",s); pthread_exit("hello"); //结束线程,返回一个值...
请给一个具体的例子和输出。谢谢。
|
#include
#include
void thread1(char s[])
{
printf("This is a pthread1.n");
printf("%sn",s);
pthread_exit("hello"); //结束线程,返回一个值。
}
/**************main function ****************/
int main(void)
{
pthread_t id1;
void *a1;
int i,ret1;
char s1[]="This is first thread!";
ret1=pthread_create(&id1,NULL,(void *) thread1,s1);
if(ret1!=0){
printf ("Create pthread1 error!n");
exit (1);
}
pthread_join(id1,&a1);
printf("%sn",(char*)a1);
return (0);
}
|
这是一个分离线程跟普通线程的对比例子,上面有pthread_join的用法对比,你看看吧
#include
#include
#include
#include
#include
void* task1(void*);
void* task2(void*);
void usr();
int p1,p2;
int main()
{
p1=0;
p2=0;
usr();
getchar();
return 1;
}
void usr()
{
pthread_t pid1, pid2;
pthread_attr_t attr;
void *p;
int ret=0;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
pthread_create(&pid1, &attr, task1, NULL);
ret=pthread_join(pid1, &p);
printf("after pthread1:ret=%d,p=%dn", ret,(int)p);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
if(p2==0)
{ pthread_create(&pid2, &attr, task2, NULL);
p2=1;
}
}
void* task1(void *arg1)
{
printf("task1n");
pthread_exit( (void *)1);
}
void* task2(void *arg2)
{
int i=0;
printf("thread2 begin.n");
//pthread_detach(pthread_self());
for(i=0;i