写点什么

Dataflow:Ruby 的声明式并发控制模型

  • 2009-05-12
  • 本文字数:867 字

    阅读完需:约 3 分钟

由于 Ruby 语言受到了一些函数式程序设计技术的影响,有些 Ruby 程序员随之采纳了 Erlang 或者 Haskell 的思想,甚者建立起了从 Ruby 到这些语言的桥梁,比如: Erlectricity

Larry Diehl 基于 Oz 语言的 Unification 概念,为 Ruby 引入了声明式并发控制模型。Oz 是一种多维编程语言,它主要作为一种函数式(包括延迟计算和即时计算)、分布式和并发编程语言而著称,但同时它也支持约束、逻辑、命令式和面向对象编程。

随着计算机中核心处理器数量的不断增加,Larry 希望声明式并发模型能给 Ruby 语言带来一些好处

  • 更加易读的代码
  • 简单但强大的并发控制

为了实现这个目标,Larry 应用了《Concepts, Techniques, and Models of Computer Programming》一书中描述的数据流线程行为(Dataflow threading behavior)概念:

如果一个操作试图使用一个未绑定的变量,该怎么办?如果纯粹从审美角度来看,这个操作应该等待,直到其它线程绑定了这个变量再继续进行。这种“文明礼貌”的线程行为被称之为数据流线程行为(Dataflow threading behavior)。

为了用 Oz 实现这个概念,Larry 应用了 Unification:

Unification 的思想是用逻辑方程来描述值,而逻辑方程可以自动被一些合一算法(unification algorithm)所解决。

那么在实际应用中,我们就可以这样编写代码了(这段代码来自 Dataflow 项目网站):

复制代码
# Local variables
include Dataflow
local do |x, y, z|
# notice how the order automatically gets resolved
Thread.new { unify y, x + 2 }
Thread.new { unify z, y + 3 }
Thread.new { unify x, 1 }
z #=> 6
end

用 local 或者 declare(实例变量)创建一些变量,然后用 unify 来绑定这些变量。

Oz Ports (非确定行为) 或者 Erlang 化 Actors 就是两个很好的例子。

但 Brian Morearty 也指出了对 Dataflow 调试、性能和内存的一些有意思的担心 。随后 Larry Diehl 在 Brian 的博客中进行了解释

有一点需要注意的是,由于这个库支持绿色线程(green threads)和本地线程池实现,它已经让 JRuby 在 MRI 上光芒四射了。

查看英文原文: Declarative Concurrency For Ruby With Dataflow

2009-05-12 00:161903

评论

发布
暂无评论
发现更多内容

mac专业的投屏软件 JustStream PRO v2.10 激活版

Rose

Mac版4K视频下载器 4K Video Downloader Plus Pro

Rose

office2016下载安装-含office2016激活工具

Rose

苹果电脑分屏功能怎么用?mac分屏软件推荐 magnet

Rose

aria2 for mac(全能的下载神器)下载及安装教程分享

理理

mac文件拖拽增强工具 Dropzone 4 v4.80.22激活版

Rose

Nexpose 6.6.271 发布下载,新增功能概览

sysin

漏洞扫描 Nexpose

Kaleidoscope for mac支持多种比较模式,文件差异一目了然

Rose

在线视频转Mp3软件 4K YouTube to MP3 Pro for Mac v5.6.1中文激活版

Rose

UI/UX 设计、网页设计、图标设计 Sketch for mac v101.1

Rose

Adobe Illustrator 2024(AI2024) v28.7.1.142 特别版/中文直装版

理理

Blue Cat Audio Blue Cats DP Meter Pro 4 (DPMP音频分析工具)v4.3.3激活版

理理

如何挑选合适的工作流程软件?8款推荐

爱吃小舅的鱼

工作流程软件

图解布隆过滤器:大规模数据处理的概率型解决方案(设计篇)

肖哥弹架构

Java 数据结构

Live Wallpaper HD for Mac(高清动态壁纸)

理理

GoodTask for Mac v7.8.4中文激活版 为用户提供了全面的任务管理解决方案

理理

Clicker for YouTube mac版 YouTube视频播放器安装

理理

捷途旅行者销量喜人,8月燃油“方盒子”SUV市场一骑绝尘!

科技热闻

SponsorBlock for YouTube:跳过赞助商、介绍、结尾、订阅提醒等

Rose

Studio One 7 Pro 永久版详细图文安装教程

Rose

Acrobat DC 2023下载安装,Acrobat DC 2023中文破解版(Mac/win)

理理

Mac系统下的压缩解压缩工具:Keka

理理

VMware Tanzu Kubernetes Grid Integrated Edition 1.20 发布下载,新增功能概览

sysin

Kubernetes vmware Tanzu

【Wing】背后的插件们

iofomo

开发工具 git command

Word 2021 LTSC for Mac (word 2021破解工具)v16.89.1正式激活版

理理

工作目标管理软件选型指南:9款推荐

爱吃小舅的鱼

工作目标管理软件

需要工作计划管理工具?10款软件帮你高效管理

爱吃小舅的鱼

工作计划管理软件

工作任务软件难选?帮您分析9款工具

爱吃小舅的鱼

工作任务管理

Bettertouchtool破解 for Mac 定制各种鼠标手势

Rose

多功能mac音频转换工具 All to MP3 Audio Converter (支持WAV、WMA、AAC、FLAC、OGG)

理理

MES系统如何与ERP系统进行数据交互

万界星空科技

制造业 ERP mes 万界星空科技mes 生产管理MES系统

Dataflow:Ruby的声明式并发控制模型_Ruby_Sebastien Auvray_InfoQ精选文章