семафоры
Semaphore mut_ex = 1; /* Для организации взаимоисключения */
При
входе в мониторПри нормальном
выходе из монитора
void mon_enter (void){
P(mut_ex);
}
void mon_exit (void){
V(mut_ex);
}
Semaphore ci = 0; int fi = 0; /* Для каждой условной переменной */
Для операции wait
void wait (i){
fi += 1;
V(mut_ex); P(ci);
fi -= 1;
}
Для операции signal
void signal_exit (i){
if (fi) V(ci);
else V(mut_ex);
}