Elixir中的并发

Erlang已经存在了30多年,并且在多核CPU出现之前就已经很好地构建了。 但是,这是一种今天再没有相关性的语言! 该语言的基础体系结构非常适合于每台计算机和移动设备上的现代CPU。

我正在撰写本文的计算机具有2.2 GHz英特尔酷睿i7 CPU,但更重要的是它具有八个内核。 简而言之,它可以一次执行八个任务。

利用这些核心的能力在许多语言中都存在,但是常常感到不合时宜或充满陷阱和挑战。 如果您曾经担心过互斥锁共享的可变状态和代码是线程安全的 ,那么您至少要注意几个陷阱。

在Erlang中,因此利用Erlang VM(BEAM)的Elixir使编写和推理并发代码变得毫不费力。 Ruby有一些很棒的库可以帮助编写并发代码,而Elixir是内置的并且是一流的公民。

这并不是说编写高度并发或分布式的系统很容易。 离得很远! 但是有了Elixir,语言就在您身边。

进程,PID和邮箱

在开始研究如何在Elixir中编写并发代码之前,先了解一下我们将要使用的术语以及Elixir使用的并发模型是一个好主意。

演员模型

Elixir(和Erlang)中的并发基于Actor模型 。 Actor是单线程进程,可以在它们之间发送和接收消息。 Erlang VM管理它们的创建,执行和通信。 他们的记忆是完全孤立的,这使得不必担心“共享状态”是没有问题的。

  • 流程 :类似于OS级别的线程,但轻巧得多。 这本质上是Elixir中并发的单位。 进程由BEAM(Erlang运行时)管理,BEAM负责将工作分散到CPU的所有核心上,甚至分散到网络上的其他BEAM节点上。 一个系统一次可以拥有数百万个这样的进程,因此您不必害怕充分利用它们。
  • 进程ID(PID) :这是对特定进程的引用。 就像Internet上的IP地址一样,PID是您告诉Elixir要将消息发送到哪个进程的方式。
  • 邮箱 :为了使进程之间可以相互通信,将来回发送消息。 当消息发送到流程时,它到达该流程的邮箱。 接收坐在其邮箱中的邮件取决于该过程。

因此,将所有内容放在一起,Elixir中的一个过程就是演员。 它可以通过向特定的PID发送消息来与其他参与者进行通信。 收件人可以通过检查其邮箱中是否有新邮件来接收邮件。

编写并发代码

在本节中,我们将研究Elixir中如何实际使用并发的Actor模型。 <

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值