Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78523
  • 博文数量: 25
  • 博客积分: 416
  • 博客等级: 一等列兵
  • 技术积分: 205
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-23 21:01
文章分类

全部博文(25)

文章存档

2013年(8)

2012年(17)

我的朋友

分类: LINUX

2012-03-17 13:28:25

pthread_cleanup_push()/pthread_cleanup_pop()是以宏方式实现的,

在pthread.h 中的宏定义:

 
  1. #define pthread_cleanup_push(routine,arg) \
  2. { struct _pthread_cleanup_buffer _buffer; \
  3. _pthread_cleanup_push(&_buffer, (routine), (arg)); 

  4. #define pthread_cleanup_pop(execute) \
  5. _pthread_cleanup_pop (&_buffer, (execute)); }



可见,pthread_cleanup_push()带有一个"{",而 pthread_cleanup_pop()带有 一个"}",
因此这两个函数必须成对出现,且必须位于程序的同一级别的代码段中才能通过编译。

实际应用中一般在调用pthread_cleanup_pop()前已经调用pthread_exit()或者return()退出了


阅读(1019) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~