第六章:通信顺序进程(CSP)

1.介绍

CSP模型看上去类似于actor模型,但是区别在于:actor模型的重点在于参与交流的实体,而CSP模型的重点在于用于交流的通道。

2. CSP和Actor

简单来说actor模型的第一类对象是并发执行的实体actor而CSP模型的第一类对象是传递消息的通道。

使用actor模型的程序是由独立的、并发执行的实体(actor,Elixir中称为进程),这些实体之间通过发送消息进行通信。每个actor都有一个信箱,用于保存已经收到但尚未被处理的消息。

与actor模型类似,CSP模型也是由独立的、并发执行的实体组成,实体之间也是通过发送消息进行通信。但两种模......

第五章:Actor

1. 介绍

函数式编程不使用可变状态,也就避免了共享可变状态带来的问题。相比之下,使用actor模型保留了可变状态,只是不进行共享。

actor类似于面向对象编程中的对象——其分封装了状态,并通过消息与其他actor通信。两者的区别是所有actor可以同时运行、actor之间的消息传递是真实地在传递消息,这与OO式的消息传递(实质是调用了一个方法)不同。

2. Actor中的消息和信箱

我们例子使用Elixir语言来写,这种语言基于erlang虚拟机。erlang vm原声对actor并发模型有良好的支持。

2.1 收发消息

如下代码定义了一个actor用来接受......

第四章:分离标识与状态

原子变量前面已经说过。SMT可以参考这篇文章

将对内存的访问封装在事务(transactions)中,Clojure消除了内存同步过程中我们易犯的那些错误。clojure提供了ref关键字来定义SMT对象。有冲突的话SMT对象就会像事务一样自动回滚重做。

SMT具有RDBMS中事务的ACI特性,没有持久性。

还有java配合akka就可以使用SMT。java不断的在进步啊~