Actor模型和CSP模型的区别
来源:互联网 发布:2016淘宝双十一破100亿 编辑:程序博客网 时间:2024/04/29 12:22
Akka/Erlang的actor模型与Go语言的协程Goroutine与通道Channel代表的CSP(Communicating Sequential Processes)模型有什么区别呢?
首先这两者都是并发模型的解决方案,我们看看其定义和实现方式:
Actor模型描述了一组为了避免并发编程的常见问题的公理:
1.所有Actor状态是Actor本地的,外部无法访问。
2.Actor必须只有通过消息传递进行通信。
3.一个Actor可以响应消息:推出新Actor,改变其内部状态,或将消息发送到一个或多个其他参与者。
4.Actor可能会堵塞自己,但Actor不应该堵塞它运行的线程。
更多可见Actor模型专题
Actor之间通讯是通过MailBox邮箱这样的中介实现,最重要的是 Actor之间并不知晓对方。
Go语言的CSP模型是由协程Goroutine与通道Channel实现:
- Go协程goroutine: 是一种轻量线程,它不是操作系统的线程,而是将一个操作系统线程分段使用,通过调度器实现协作式调度。是一种绿色线程,微线程,它与Coroutine协程也有区别,能够在发现堵塞后启动新的微线程。
- 通道channel: 类似Unix的Pipe,用于协程之间通讯和同步。协程之间虽然解耦,但是它们和Channel有着耦合。
Actor模型和CSP区别图如下:
它们都是描述独立的进程通过消息传递进行通信。主要的区别在于:在CSP消息交换是同步的(即两个进程的执行"接触点"的,在此他们交换消息),而Actor模型是完全解耦的,可以在任意的时间将消息发送给任何未经证实的接受者。由于Actor享有更大的相互独立,因为他可以根据自己的状态选择处理哪个传入消息。在Go语言中为了不堵塞进程程序员必须检查不同的传入消息,以便预见确保正确的顺序。CSP好处是Channel不需要缓冲消息,而Actor理论上需要一个无限大小的邮箱作为消息缓冲。
0 0
- Actor模型和CSP模型的区别
- Actor模型和CSP模型的区别
- ACTOR模型和CSP模型
- 关于并发模型 Actor 和 CSP
- 并发编程模型【Actor模型】【CSP模型】
- Actor模型的本质
- Actor模型的本质
- 下一代的 Actor 模型框架 Proto Actor
- Actor模型
- Actor模型
- Actor模型
- Actor模型
- Actor模型
- actor 模型
- Actor模型
- Actor模型
- Actor模型
- Actor模型
- Struts2配置文件讲解
- STM32 SPI SD ff9文件系统
- android的定制
- Windows 7 修改系统临时文件夹
- 第十七周 刷OJ题-重复字符串
- Actor模型和CSP模型的区别
- oracle查询某张表的外键(最终解决办法)
- Tomcat中startup.bat可以正常运行,但是无法访问http://localhost:8080/
- liferay发送邮件
- Oracle 语句的执行步骤
- Send Error:不允许使用邮箱名称。 服务器响应为: You are not authorized to send mail, authentication is required
- C语言中对于Struct 对齐的理解
- linux如何看定时调用的程序
- js思维导图