pthread_cleanup_push()/pthread_cleanup_pop()是以宏方式实现的,
在pthread.h 中的宏定义:
- #define pthread_cleanup_push(routine,arg) \
- { struct _pthread_cleanup_buffer _buffer; \
- _pthread_cleanup_push(&_buffer, (routine), (arg));
- #define pthread_cleanup_pop(execute) \
- _pthread_cleanup_pop (&_buffer, (execute)); }
可见,pthread_cleanup_push()带有一个"{",而 pthread_cleanup_pop()带有 一个"}",
因此这两个函数必须成对出现,且必须位于程序的同一级别的代码段中才能通过编译。
实际应用中一般在调用pthread_cleanup_pop()前已经调用pthread_exit()或者return()退出了
阅读(1019) | 评论(0) | 转发(0) |