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

Gan*_*alf 7 concurrency multithreading producer-consumer actor

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

yoo*_*er8 4

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

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