Operating system 如何使用忙等待解决方案定义信号量

Operating system 如何使用忙等待解决方案定义信号量,operating-system,semaphore,Operating System,Semaphore,如何定义具有忙等待解决方案的信号量?我得到了类似的结果 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); } } wait(信号量s){ s=s-1; if(s该条件可能会检测队列中是否有任

如何定义具有忙等待解决方案的信号量?我得到了类似的结果

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);
}
}
wait(信号量s){
s=s-1;

if(s该条件可能会检测队列中是否有任何进程休眠(阻塞)。但是,我认为这些条件是不正确的,考虑到二进制信号量(信号量最初为s==1)的行为,伪代码应该是

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);
  }
}
wait(信号量s){
s=s-1;
如果