154  4.  ++-   

  funcA ()     cleanup_funcA ()  
     pthread_cleanup_push (). 
        
pthread_cleanup_pop ().       (pop-
)   0,     ,   -
 .       , -
  funcA ().

  funcB ()   cleanup-:

void *?uncB(void *X)
{

int *Tid;

Tid = new int;

//   .

//. . .

pthread_cleanup_push(cleanup_?uncB,Tid) ;

//   .

II...

pthread_cleanup_pop(1) ;

}

  funcB ()     cleanup_funcB ()  
 .        , 
 pthread_cleanup_pop ()     1, ..  -
           . -
 ,        "  -
", ..    ,    
funcB (),     . -"", cleanup_funcA ()
 cleanup_funcB (),    ,     -
 ,  ,    .

4.9.2.   

      ,   -
,     .      -
  .       , -
    (),   ,    -
.     ,  ,
       ,  -
 ,   " "    . 
   ()      . -
       . 4.12.

,    (. . 4.12)   taski (), -
    ,   ,
    taskX ().     taski ()  -
 ,     .  taskX () 
"" ,   ,    
taskC ().  ,   ,   
taskX (),    .  taskC ()   taskY ()
 ..       ,   