scala中:::的用法
在过去的十年中,
Actor模型作为一种简单,有效且省钱的并发构建概念而积极推广。 Actors在90年代初被Erlang普及,并在Scala中用作主要的并发构造,Actor提供了无共享事件驱动模型,在该模型中创建和维护单个actor的成本很低(因此您可以继续运行数百万个actor),并且在分布式节点上工作的远程角色看起来和感觉都像本地角色。
但是,与基于线程的并发或STM相比,不明智地使用actor可能带来更多的痛苦和样板。 缺乏基于角色的建模的深入文档会导致误解和误解,这些误解和误解可通过在Erlang中构建容错系统的最佳实践和设计指南来解决。
防御性编程迫使您付出巨大的努力来保护系统免受您可能想到的各种意外行为的影响,并尽可能检查输入和当前状态,并定义在更高级别上升级问题的方法。 作为一名防御性程序员,您应该始终保持积极主动,并寻找新的潜在问题来处理,因为即使是最小的问题也可以导致无关紧要的组件发生故障,也可能导致巨大的系统崩溃。
适当的容错系统不会倾向于预测所有可能的故障原因(以防止单个组件崩溃),而是将组件与系统的其余部分隔离开并重新启动它,以保持系统一致地工作。 如果重新启动组件没有帮助,则该问题可能会传播到更高级别,以便[可能]重新启动与该组件交换消息的各方。
就像乔·阿姆斯特朗 ( Joe Armstrong )在他的《 编程Erlang 》一书中所说的那样,当一个演员在充满演员的房间里死亡时,其他人可能应该注意到这一点并开始解决问题(清理尸体)。
在Erlang和Scala中,此行为是通过链接角色来实现的。 最基本的形式是,当两个角色链接在一起,而其中一个死亡时,它也会向另一个角色发送退出信号以终止它。
Actor链接是双向操作,因此,当将actor A链接到B时ÿ