从课件上的反应性编程的类原理来看:
“如果一个参与者向同一个目的地发送多条消息,它们就不会出现故障(这是Akka特有的)。”
行动者A和B
A发送B msg1 A发送B msg2
B将接收msg1,然后接收msg2
警告:我从来没有在Erlang编程
我认为这种消息排序语义在Erlang中没有得到保证。这似乎是一个巨大的差异,它影响了您可以使用类似框架编写的不同类型的程序。
例如,在Akka,您可以这样做:
case class msg(x: Int)
case object report
class B extends Actor {
var i: Int = 0
def recieve
所以我在几年前(2008年)看了这段视频,乔·阿姆斯特朗( Joe )解释了Erlang的背景。他说得很有道理,我要问的是他在13点07分说的话:
Erlang是一种并发语言;我的意思是,语言中的进程是编程语言的一部分。它们不属于操作系统。这就是像Java和C++这样的语言的问题所在:线程不是在编程语言中;线程是操作系统中的东西,它们继承了操作系统中的所有问题。其中一个问题是内存管理系统的粒度.
他继续讨论线程管理的问题,以及这与语言和操作系统之间的脱节有什么关系。然后又说,Erlang在利用多核技术方面处于独特的地位,也就是说,它可以“直接”管理内核,而根本不需要使用线程?或者是他理