当前位置:  技术问答>linux和unix

关于pthead_cleanup_push

    来源: 互联网  发布时间:2016-11-30

    本文导语:  #include #include #include void clean1(void *arg) {    printf("clean1 n"); } void clean2(void *arg) {    printf("clean 2 n"); } void * f1(void *arg) {    printf("thread 1 startingn");    pthread_cleanup_push(clean1,NULL);    pthread_cleanup_push(clean2,NULL)...

#include
#include
#include
void clean1(void *arg)
{
   printf("clean1 n");
}
void clean2(void *arg)
{
   printf("clean 2 n");
}
void * f1(void *arg)
{
   printf("thread 1 startingn");
   pthread_cleanup_push(clean1,NULL);
   pthread_cleanup_push(clean2,NULL);
  
   pthread_cleanup_pop(0);
   pthread_cleanup_pop(0);
   printf("after popn");
   pthread_exit((void *)2);
}

int main()
{
  pthread_t t1,t2;
  void * pret;
  pthread_create(&t1,NULL,f1,NULL);
  pthread_join(t1,&pret);
  printf("pret:%dn",pret);
  //exit(0);
}
为什么我的线程退出的时候,没有调用clean1和clean2两个函数?
输出是:
thread 1 starting
after pop
pret:2


|
pthread_cleanup_pop(1)

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3