4.9.   149



#include <pthread.h>
void pthread_testcancel(void) ;

 4.3      ,         

pthread_setcancelstate (), pthread_setcanceltype ()  pthread_testcancel (),
        
 .

//  4.3

ftinclude <iostream>
^include <pthread.h>

void *taskl(void *X)
(

int OldState;

//   .

pthread_setcancelstate(PTHREAD_CANCEL_DISABLE,
&01dState) ;

?or(int Count = 1,-Count < 100;Count++)
{

cout  "  A: "  Count  endl;

}

}

void *task2(void *X)
{

int OldState,OldType;

//    .
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,
&01dState) ;

pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,
&01dType) ;

for (int Count = 1,-Count < 100;Count++)
{

cout  "  : "  Count  endl;

}

}

void *task3(void *X)
{

int OldState,OldType;

//    .
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,
&01dState) ;

pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,
&01dType) ;

for (int Count = 1,-Count < 1000;Count++)
{

cout  "  : "  Count  endl;

iff(Count%100) == 0){
pthread_testcancel();