5.3.    199

re turn(0) ;

}

void *task2(void *X)
{

pthread_mutex_lock(&Mutex) ;

//   .

pthread_mutex_unlock(&Mutex) ;

return(0) ;

}

int main(void)
{

//. . .

pthread_mutexattr_init(&MufcexAttr) ;

pthread_mutex_init(&Mutex,&MutexAttr) ;

//  .

pthread_create(&ThreadA,NULL,taskl,NULL) ;

pthread_create(&ThreadB,NULL,task2,NULL) ;

//. . .

return(0) ;

}

  5.1  ThreadA  ThreadB   , -
    Mutex.

  5.2 ,      
  .

//  5.2.    
//                

//. . .
int Rt;

pthread_mutex_t Mutexl ;

pthread_mutexattr_t MutexAttr;

int main(void)
{

//.. .
pthread_mutexattr_init(&MutexAttr) ;

pthread_mutexattr_setpshared(&MutexAttr,

PTHREAD_PROCESS_SHABED);

pthread_mutex_init(&Mutexl,&MutexAttr) ;

i?((Rt = fork()) == 0){ //  .

pthread_mutex_lock(&Mutexl) ;

//  .

pthread_mutex_unlock(&Mutexl) ;

}
else{ //  .

ptriread_mutex_lock(&Mutexl) ;

//  .

pthread_mutex_unlock(&Mutexl) ;

return(0) ;

}