生产者/消费者模型是否与演员相等?

时间:2011-08-09 19:10:04

标签: multithreading concurrency producer-consumer actor

最近我一直在阅读很多关于并发编程如何变得困难的文章,以及如何使用共享状态进行并发编程几乎是不可能的。因此,像Erlang这样的语言(我认为这是开启的,如果不是问题仍然有意义)使用Actor模型进行并发,并且在线程之间没有共享状态。现在,在编写并发系统的时候,我并没有发现并发性很难 - 但总的来说,我几乎可以将任何问题都纳入生产者/消费者范例,并且没有太多(如果有的话)共享状态。虽然这是正确的吗?线程之间的消息队列是否实际上是共享状态?或者并发编程的生产者/消费者模型真的是Actor模型的具体示例(这是我真正的问题)。想法?

1 个答案:

答案 0 :(得分:4)

从技术上讲,共享消息代表了总体应用程序的状态,但前提是生产者和消费者本身都是无状态的(否则它们只代表消息共享媒体的状态/ a)。生产者/消费者模型并不是每个生产者和消费者都是行为者模型的一个例子。生产者(也可能是来自同一共享消息队列或来自外部源的消费者)做他们所做的事情并吐出一些排队的消息。队列本身可以被认为是一个参与者,虽然是被动的,因为它接收/保存消息,并且可以分发它们(或者只是等待它们被采用)。消费者是参与者,他们从共享队列中接收/接收消息,并根据这些消息进行工作。

所以基本上我的答案是生产者/消费者模型不是Actor模型的一个例子,而是一个在共享环境中工作的Actors集合的例子。