1
6
我在Erlang编程方面的经验是,当您期望较高的消息传递率(即,生产者比消费者更快)时,您可以添加自己的流控制。一个简单的场景
你也可以将其颠倒,生产者等待消费者来获取下一条可用的消息。
这些方法和其他流量控制可以隐藏在函数后面,第一个方法在
我认为异步消息传递在Erlang中是更好的方法,因为当延迟很高时,您可能非常希望在计算机之间消息传递时避免同步。然后,我们可以用巧妙的方法来实现流控制。比如说,要求消费者对生产商发送的每N条消息进行确认,或者时不时地发送一条特殊的“当您收到这条消息时给我打电话”消息来计算ping时间。 |
2
3
一般来说,这是无边界队列与有边界队列。无堆叠通道可以视为0大小队列的特殊情况。 有界队列有死锁的倾向。两个线程/进程试图互相发送消息,都有一个完整的队列。 无边界队列有更细微的失败。正如您提到的,大型邮箱无法满足延迟要求。足够远,它最终会溢出;没有无限内存这样的东西,所以它实际上只是一个有界队列,有一个巨大的限制,当进程满时会中止进程。 哪一个最好?很难说。这里没有简单的答案。 |