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;
如果