23,125
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<pthread.h>
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=%d\n", 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("task1\n");
pthread_exit( (void *)1);
}
void* task2(void *arg2)
{
int i=0;
printf("thread2 begin.\n");
//pthread_detach(pthread_self());
for(i=0;i<100;i++)
{
sleep(2);
printf("At thread2: i is %d\n",i);
usr();
}
pthread_exit((void *)2);
}