4.11.      175

pthread_mutex_lock(&Mutex)
if(AvailableThreads > 1)

return 1
else

return 0

pthread_mutex_unlock(&Mutex)
}

 threadAvailabilityO   1,   -
       .   
  ThreadAvailability,     ,
   .    
decrementThreadAvailabilityO,     -
     .     
incrementThreadAvailability(),    -
 ThreadAvailability    .    -
   pthread_mutex_lock ()      
     pthread_mutex_unlock ()  . 
    ,   
  ,   ,    , 
 .  taskX (), taskY ()  taskZ ()  , -
     .

         -
   ,  (      -
 )   .     -
    ,      -
   ,        .
       -  
.         ,
        
.          4.7.

//  4.7.  2:   
//                  
//              ()

//. . .

pthread_t Thread[N]

//  .

{

pthread_create(&(Thread[1]...taskx...) ;

pthread_create(&(Thread[2]...taskY...) ;

pthread_create(&(Thread[3]...taskZ...) ;

//. . .

 while(   )
 
 
switch( )
{

case X :

    XQueue