美文网首页
Actor模型合CSP模型

Actor模型合CSP模型

作者: 月下蓑衣江湖夜雨 | 来源:发表于2020-08-21 11:45 被阅读0次

Actor模型

在Actor模型中,主角是Actor,类似一种Worker。Actor彼此之间直接发送消息,不需要经过什么中介,消息是异步发送和处理的:


Actor模型

Actor模型描述了一组为了避免并发编程的常见问题的公里:
1、所有Actor状态是Actor本地的,外部无法访问;
2、Actor必须只有通过消息传递进行通信;
3、一个Actor可以响应消息:退出新Actor,改变其内部状态,或将消息发送到一个或多个其他参与者;
4、Actor可能会阻塞自己,但Actor不应该阻塞它运行的线程;

CSP(Communicating Sequential Processes)模型

Channel模型中,worker之间不直接彼此联系,而是通过不同channel进行消息发布和侦听。消息的发送者和接收者之间通过Channel松耦合,发送者不知道自己消息被哪个接收者消费了,接收者也不知道是哪个发送者发送的消息。


CSP模型

Go语言的CSP模型是有携程Goroutine与通道Channel实现:
Go携程goroutine:是一种轻量线程,它不是操作系统的线程,而是一个操作系统线程分段使用,通过调度器实现协作式调度。是一种绿色线程,微线程,它与Gouroutine携程也有区别,能够在发现堵塞后启动新的微线程。
通道channel:类似Unix的Pipe,用于携程之间通讯和同步。携程之间虽然解耦,但是和它们Channel有着耦合。

Actor模型和CSP模型区别

Actor模型和CSP模型区别如下:


Actor模型和CSP模型区别

Actor之间直接通讯,而CSP是通过Channel通讯,在耦合度上两者是有区别的,后者更加松耦合。
同时,它们都是描述独立的流程度过消息传递进行通信。主要的区别在于:在CSP消息交互是同步的(及两个流程的执行的‘接触点’,在它们交换消息处),而Actor模型是完全解耦的,可以在任意的时间将消息发送给人和未经证实的接受者。由于Actor享有更大的相互独立性,因为它们可以根据自己的状态选择处理哪个传入消息。自主性更大些。
在Go语言中为了不阻塞流程,程序员必须检查不同的传入消息,以便遇见确保正确的顺序。CSP好处是Channel不需要缓冲消息,而Actor理论上需要一个无限大小的邮箱作为消息缓冲。

相关文章

  • Actor模型合CSP模型

    Actor模型 在Actor模型中,主角是Actor,类似一种Worker。Actor彼此之间直接发送消息,不需要...

  • [xactor]学习笔记--序

    最近学习CSP模型和actor模型,actor模型没有玩过。所以开始学习。actor模型在rust语言下有 Xac...

  • Go 并发实战--管道浅析

    在讲 channel 之前,有必要先提一下 CSP 模型,传统的并发模型主要分为 Actor模型和CSP模型,CS...

  • Actor模型

    Actor模型本质上是一种计算模型,基本的计算单元称为Actor。在Actor模型中,所有的计算都是在Actor中...

  • actor、reactor与proactor模型

    actor、reactor与proactor模型:高性能服务器的几种模型概念。 actor模型: 实体之通过消息通...

  • actor reactor proactor模型

    actor、reactor与proactor模型:高性能服务器的几种模型概念。 actor模型: 实体之通过消息通...

  • Go语言学习笔记-并发编程-CSP并发机制

    Actor Model CSP vs Actor 和Actor的直接通讯不同,CSP模式则是通过Channel进行...

  • Golang CSP并发模型

    今天介绍一下 go语言的并发机制以及它所使用的CSP并发模型 CSP并发模型 CSP模型是上个世纪七十年代提出的,...

  • Go基础——channel

    CSP 要想理解 channel 要先知道 CSP 模型。CSP 是 Communicating Sequenti...

  • Golang CSP并发模型

    go语言的并发机制以及它所使用的CSP并发模型 CSP并发模型CSP模型是上个世纪七十年代提出的,用于描述两个独立...

网友评论

      本文标题:Actor模型合CSP模型

      本文链接:https://www.haomeiwen.com/subject/zahujktx.html