Erlang并发编程:从基础到可靠系统构建
1. 引言
在编程领域,并发是一个既重要又具有挑战性的话题。很多时候,我们在处理并发问题时采用了不当的编程模型,导致程序出现各种混乱。而Erlang为我们提供了一种全新的思路,它虽然在某些方面让简单的事情变得复杂,但却能在并发和可靠性方面带来巨大的回报。
2. 并发基础问题与编程模型困境
在编程世界中,我们常常面临并发难题。很多行业就像在阿姆斯特丹嗑药的传教士孩子一样,大量采用了一些不当的编程方式。比如,并发本身就很困难,我们却选择添加可变状态,导致程序在并发运行时相互冲突;函数和方法存在副作用,使得我们无法证明程序的正确性,也难以预测其结果;为了追求性能,我们使用带有共享状态的线程,而不是无共享状态的进程,这就需要额外的工作来保护每一段代码,最终导致程序陷入混乱。
实际上,并发本身并不难,问题在于我们一直使用错误的编程模型。Erlang虽然让一些原本简单的事情变得复杂,比如没有副作用和可变状态,这要求我们彻底改变编码方式,还要忍受基于Prolog的语法,对很多人来说这种语法很陌生。但正是这些特点,让我们在并发和可靠性方面获得巨大的回报。
3. 基本并发原语
Erlang的三个基本并发原语分别是发送消息(使用 ! )、生成进程(使用 spawn )和接收消息(使用 receive )。下面我们将通过一个翻译服务的例子来详细介绍如何使用这些原语,并将它们封装成一个基本的客户端 - 服务器模式。
3.1 基本接收循环
我们从一个翻译过程开始。
超级会员免费看
订阅专栏 解锁全文
1204

被折叠的 条评论
为什么被折叠?



