Как определить семафор с занятым решением ожидания? Я получил что-то вроде этого
wait(Semaphore s){
s=s-1;
if (s<=0) {
// add process to queue
block();
}
}
signal(Semaphore s){
s=s+1;
if (s<0) {
// remove process p from queue
wakeup(p);
}
}
, но я не понимаю условие, требуемое в блоке сигнала
if (s)<0) {// удаляем процесс p из очереди wakeup (p);} </p>
почему мы проверяем, если (s <0) здесь </p>