Asynchronous 为什么可以';我们用如下信号量实现监视器

Asynchronous 为什么可以';我们用如下信号量实现监视器,asynchronous,operating-system,synchronization,semaphore,monitor,Asynchronous,Operating System,Synchronization,Semaphore,Monitor,我不明白为什么我们不能直接通过如下信号量在监视器中实现条件操作:wait()和signal(): wait(){Semaphores.wait()} signal(){Semaphores.signal()} 其中信号量.wait()实现如下: Semaphores.wait(){ S->value --; if(S->value <0){ go to sleep; } } 是否因为使用监视器的样式是: Acquire_lock(); //using

我不明白为什么我们不能直接通过如下信号量在监视器中实现条件操作:
wait()
signal()

wait(){Semaphores.wait()}
signal(){Semaphores.signal()}
其中
信号量.wait()
实现如下:

Semaphores.wait(){
  S->value --;
  if(S->value <0){
    go to sleep;
  }
}
是否因为使用监视器的样式是:

Acquire_lock();  //using mutex.wait()
while(condition){x.wait();}
Release_lock(); //using mutex.signal()
/*critical section */
Acquire_lock();  //using mutex.wait()
x.signal();
Release_lock(); //using mutex.signal()
虽然信号量的样式不需要获取锁,但是:

Semaphores.wait();
/*critical section */
Semaphores.signal();
Semaphores.wait();
/*critical section */
Semaphores.signal();