Chinaunix首页 | 论坛 | 博客
  • 博客访问: 346151
  • 博文数量: 168
  • 博客积分: 6895
  • 博客等级: 准将
  • 技术积分: 1726
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-12 23:01
文章分类

全部博文(168)

文章存档

2011年(6)

2010年(162)

我的朋友

分类: LINUX

2010-08-25 01:23:08

#include
#include

void clean_up(void*  arg)
{
        printf("\nin clean_up function\n");
        printf("arg=%s\n",(char*)arg);
        return;
}

void * pthread1(void *arg)
{
        printf("pthread begin\n");
        pthread_cleanup_push(clean_up,"first first first");
        pthread_cleanup_push(clean_up,"second second second");
            
        pthread_cleanup_pop(1);
        pthread_cleanup_pop(0);
        printf("in the end pthread1\n");
        pthread_exit((void *)200);
}
            
int main(void)
{
        int err;
        pthread_t tid1;
        void * ret;
            
        err=pthread_create(&tid1,NULL,pthread1,NULL);
        if(err!=0){
        printf("pthread_create error\n");
        return -1; 
        }   
            
        err=pthread_join(tid1,&ret);
        if(err!=0){
        printf("pthread_joid error\n");
        return -1; 
        }   
            
        printf("pthread_join return is %d\n",(int)ret);
            
        return 0;
}
++++++++++++++++++++++++++++++++++++
fan@fan:~/arm$ gcc -o app pthread_pop.c -lpthread
fan@fan:~/arm$ ./app
pthread begin

in clean_up function
arg=second second second
in the end pthread1   //其实还是在没有退出子线程的时候调用函数的。
pthread_join return is 200
fan@fan:~/arm$ 
+++++++++++++++++++++++++++
pop和push的参数都设置为1的情况
fan@fan:~/arm$ gcc -o app pthread_pop.c -lpthread
fan@fan:~/arm$ ./app
pthread begin

in clean_up function
arg=second second second

in clean_up function
arg=first first first
in the end pthread1
pthread_join return is 200
阅读(432) | 评论(0) | 转发(0) |
0

上一篇:论团结合作

下一篇:8 24

给主人留下些什么吧!~~