监视器是实现进程同步的方法之一。监视器由编程语言支持,以实现进程之间的互斥。例如Java同步方法。Java提供wait()和notify()构造。
null
- 它是在一种特殊的模块或包中组合在一起的条件变量和过程的集合。
- 在监视器外部运行的进程无法访问监视器的内部变量,但可以调用监视器的过程。
- 一次只能有一个进程在监视器内执行代码。
语法:
条件变量: 对监视器的条件变量执行两种不同的操作。
Wait. signal.
假设我们有两个条件变量 条件x,y;//变量声明
等待手术 x、 wait():对任何条件变量执行等待操作的进程被挂起。挂起的进程被放置在该条件变量的块队列中。
注: 每个条件变量都有其唯一的块队列。
信号操作 x、 signal():当一个进程对条件变量执行信号操作时,其中一个被阻塞的进程被赋予了机会。
If (x block queue empty) // Ignore signal else // Resume a process from block queue.
监视器的优点: 与使用信号量等技术相比,监视器的优点是使并行编程更容易,且不易出错。
监视器的缺点: 监视器必须作为编程语言的一部分来实现。编译器必须为它们生成代码。这给了编译器额外的负担,即必须知道哪些操作系统设施可用于控制对并发进程中关键部分的访问。一些确实支持监视器的语言有Java、C#、Visual Basic、Ada和并发Euclid。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END