Multithreading 生产者/消费者模式是否等同于参与者?

Multithreading 生产者/消费者模式是否等同于参与者?,multithreading,concurrency,producer-consumer,actor,Multithreading,Concurrency,Producer Consumer,Actor,所以最近我读了很多关于并发编程有多困难,共享状态下的并发编程几乎不可能的文章。因此,像Erlang这样的语言(我认为这是开着的,如果这个问题没有意义的话)使用Actor模型进行并发,并且线程之间没有共享状态。现在,在我编写并发系统的时间里,我还没有发现并发有那么难——但一般来说,我可以将几乎所有的问题纳入生产者/消费者范式,并且在没有太多(如果有的话)共享状态的情况下生存。虽然这是正确的吗?线程之间的消息队列实际上是共享状态吗?或者并发编程的生产者/消费者模型真的是演员模型的一个具体例子(这是我

所以最近我读了很多关于并发编程有多困难,共享状态下的并发编程几乎不可能的文章。因此,像Erlang这样的语言(我认为这是开着的,如果这个问题没有意义的话)使用Actor模型进行并发,并且线程之间没有共享状态。现在,在我编写并发系统的时间里,我还没有发现并发有那么难——但一般来说,我可以将几乎所有的问题纳入生产者/消费者范式,并且在没有太多(如果有的话)共享状态的情况下生存。虽然这是正确的吗?线程之间的消息队列实际上是共享状态吗?或者并发编程的生产者/消费者模型真的是演员模型的一个具体例子(这是我真正的问题)。想法?

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


因此,基本上我的答案是,生产者/消费者模型不是参与者模型的一个示例,而是一个参与者集合在共享环境中工作的示例。

参与者范式中是否有任何内在的东西表明不能有多个参与者?在我看来,参与者范式更能代表一个实体,虽然生产者/消费者范式更能代表一个系统,但是,我认为你可以把生产者/消费者系统看作是一个演员,如果它与其他实体存在于一个更大的环境中,并且可以与更大系统中的其他实体交互。这就是我最初的想法。希望更多的人加入进来,我猜大家都忙着回答“如何用Java编写文件?”…哈哈