监视器:“在每个时间点,最多有一个线程可能正在执行其任何方法”

问题描述

我最近学习了监视器的概念。我的教授说“每次只能在监视器中显示一个线程”。我不确定我是否明白这一点,这就是我进行研究的原因。 Wikipaideia 将我写的内容作为标题。不过,我的书指出,在监视器内部有队列,用于等待的线程,直到满足某些定义的条件。真正让我困惑的是一个代码,我们得到了一个代码,用于解决监视器的有界缓冲区问题。
我的问题是:如果一个进程没有被监视器内的 wait() 停止,那么监视器结构是否保证我们可以执行整个方法而不会被上下文切换或仅仅那样中断,而它正在执行没有其他人生产的方法或消费者正在执行他们的相应方法??。 因为在这幻灯片

enter image description here

似乎我们只有在缓冲区为空时才唤醒消费者,并且我们刚刚生产了一个项目。
每当一个生产者到达那部分代码时,就生产了一个项目。为什么我们不每次都发出信号?我认为,我们(可能)认为:如果缓冲区不为空,那么它们可能是“活动”消费者等待,因为它们被上下文切换中断而被恢复,但后来我想这可能? 是否有可能在方法内部被中断(不是因为您被“等待”)而是被上下文切换中断?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)