微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

enter image description here

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。