- 论坛徽章:
- 0
|
#include<stdio.h>
#include<unistd.h>
#include<pthread.h>
void* task1(void*);
void* task2(void*);
int main()
{
pthread_t pid1, pid2;
pthread_attr_t attr;
int ret;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
pthread_create(&pid1, &attr, task1, NULL);
ret=pthread_join(pid1, NULL);
printf("ret=%d\n", ret);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
pthread_create(&pid2, &attr, task2, NULL);
ret=pthread_join(pid2, NULL);
printf("ret=%d\n", ret);
return 1;
}
void* task1(void*)
{
printf("task1\n");
pthread_exit(NULL);
}
void* task2(void*)
{
pthread_detach(pthread_self());
printf("task2\n");
pthread_exit(NULL);
}
执行结果
ret=22
task1
task2
ret=0
第一个phread_join() 没有等待直接返回了
第二个phread_join() 等待,从返回值看执行成功了。
请大家帮忙看看 |
|