写点什么

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:162130

评论

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

Spring 应用合并之路(一):摸石头过河

京东科技开发者

Autodesk AutoCAD 2024 Mac中文破解版 cad2024下载安装

Rose

数据开发革新篇:逻辑数据编织平台重塑开发流程

Aloudata

数据仓库 数据分析 数据开发 数据虚拟化 数据编织

重工业数字化转型创新实践:某国家特大型钢铁企业如何快速落地基于实时数仓的数据分析平台

tapdata

钢铁行业数字化转型 实时数仓解决方案 hive数据如何同步到doris oracle数据同步方案 mysql数据复制

【转载】把大模型做实 把供应链做透: 京东推出言犀大模型

京东科技开发者

结构仿真流体仿真热仿真分析咨询报价 点击友商科技

极客天地

Downie 4 :流行的 Mac 视频下载工具

Rose

AlDente Pro for Mac:保护电池健康的小工具

Rose

AI驱动的低代码未来:加速应用开发的智能解决方案

天津汇柏科技有限公司

低代码平台 AI 人工智能

AnyGo for Mac 在iPhone / iPad上轻松模拟GPS位置

Rose

2024 必备工具:JProfiler,解锁 Java 应用性能密码

Rose

OpenAI被爆12月发布其Orion AI模型!波兰“OFF”电台解雇所有记者,启用AI“主持人”|AI日报

可信AI进展

数据驱动营销:淘宝商品详情API助力电商运营精准制胜

代码忍者

API 接口 pinduoduo API

人工智能 | 智谱 AI 大模型

测试人

人工智能 软件测试

Go 错误处理指北:Defer、Panic、Recover 三剑客

江湖十年

面试 Go web 后端】

西部数据亮相安博会,展出多款领先存储产品

极客天地

华大北斗芯片级产品矩阵亮相第三届北斗规模应用国际峰会

江湖老铁

IntelliJ IDEA 2024:编程新境界,高效开发新引擎

Rose

【玩转金融素材生成】探索交互式AIGC组合素材生成技术

京东科技开发者

云管平台供应商大汇总看这里!

行云管家

云计算 云服务 云管平台 云管理

Microsoft Remote Desktop:在不同设备之间轻松地共享文件和资源

Rose

做梦都想拥有的陪伴对象,AI居然免费帮我实现了...文中附送体验地址!

可信AI进展

腾讯TVQA斩获ECCV 2024压缩视频质量评估比赛冠军

极客天地

中国AI开发者应用生态调研报告

易观分析

Lazada淘宝详情API的价值与应用解析

科普小能手

API 接口 API 测试 lazada商品数据接口 lazada API接口 lazada API

Charles for Mac 强大的网络代理工具

Rose

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