文章:Ruby 中的 Concurrency、Actors 和 Rubinius——MenTaLguY 访谈

  • Werner Schuster
  • 贾晓楠

2008 年 3 月 3 日

话题:Ruby语言 & 开发架构

随着最近大家对Erlang和几乎所有能使并发程序设计变得简单的东西趋之若骛,一大堆不熟悉的名词冒了出来。不过在计算机界,这些技术可都不是新的。

Actors的概念已经出现了几十年了,但直到最近才在 Erlang 的推动下浮出水面,是 Erlang 令 Actor 风格的编程变得容易。它使用轻量级进程、简洁的语法来给进程发送消息,并在处理接受消息时使用模式匹配。一个叫做Revactor的 Ruby 1.9 的库给 Ruby 加入了 Erlang 风格的 Actors。

协程(Coroutines)也已经出现很长时间了,在许多语言中呈现不同的形式。它最开始作为并发性原语,在 60 年代由于预定线程的流行而消失于公众的视线。不过它在某些语言中还保留了下来。Python 曾经在有段时间具有一种特别的协程,即Generator 特性Lua 也曾具有完整的协程。像 C 之类的语言也曾有协程库,例如libtaskProtothreadsRuby 1.9 加入了称为Fibers的特性,既可以完全做为协程使用,也可以用通过 Generator 来使用。

我们采访了MenTaLguY,他作为 Ruby 社区的会员,长期致力于并发程序的各个方面。这篇访谈力图透视 Actors 和协程,并探究他们与Rubinius的关系。Rubinius 也有一套自己的并发程序原语,例如用于线程通讯的通道(Channel)。

阅读:Ruby 中的 Concurrency、Actors 和 Rubinius——MenTaLguY 访谈



Ruby语言 & 开发架构