发送者和接收者之间的消息传递

发送者和接收者之间的消息传递

在消息传递(生产者-消费者)中,当发送进程被阻塞直到接收进程或邮箱收到消息时,就会发生阻塞发送。

阻塞接收是指接收方阻塞直到有消息可用为止。

当我们使用阻塞的 send() 和 receive() 语句时,生产者-消费者问题的解决方案就变得微不足道了。

为什么它变得微不足道?

答案1

您似乎引用的书(“操作系统概念”- Silberschatz、Galvin、Gagne)对此主题有这样的说法:

send() 和 receive() 的不同组合是可能的。当 send() 和 receive() 都阻塞时,发送者和接收者之间就会有一个会合点。当我们使用阻塞的 send() 和 receive() 语句时,生产者-消费者问题的解决方案就变得微不足道了。生产者仅调用阻塞的 send() 调用并等待消息传递到接收者或邮箱。同样,当消费者调用 receive() 时,它会阻塞,直到消息可用。

对我来说这似乎很清楚。

答案2

您的问题的答案是:请尝试实现一种读写非阻塞的消费者-生产者问题的解决方案。

如果你这样做,也就是说,如果你考虑如何解决非阻塞读/写操作的问题,你很快就会发现,你需要进行缓冲区管理。然后你会发现,在并发情况下,你必须处理读者/作者的公平性等问题。问题很快就会变得多方面,一些子问题(公平性)没有明显的解决方案。

相关内容