10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

评论

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

数字藏品系统开发,NFT艺术品交易平台搭建

薇電13242772558

NFT 数字藏品

Move Protocol Beta测试版进行时,瓜分生态核心权益MOMO

鳄鱼视界

带你区分几种并行

华为云开发者联盟

后端 开发 华为云

天天在都在谈的S3协议到底是什么?一文带你了解S3背后的故事

wljslmz

对象存储 S3 6月月更

如何使用 DATAX 以 UPSERT 语义更新下游 ORACLE 数据库中的数据

明哥的IT随笔

oracle 大数据 数据仓库 DataX

秒云云原生信创全兼容解决方案再升级,助力信创产业加速落地

MIAOYUN

运维 云原生 信创 智能运维 信创云

Gartner 网络研讨会 “九问数字化转型” 会后感

明哥的IT随笔

数字化转型

Serverless 时代下微服务应用全托管解决方案

阿里巴巴云原生

阿里云 Serverless 微服务 云原生

华为云发布桌面IDE-CodeArts

华为云开发者联盟

云计算 开发工具 华为云 代码补全

北京web前端培训 | React全家桶之入门介绍

@零度

React web前端开发

Move Protocol Beta测试版再调整,扩大总奖池

股市老人

Move Protocol Beta测试版稳定,临时决定奖池规模再扩大

小哈区块

你的城市有24小时共享自助洗车吗

共享电单车厂家

自助洗车加盟 自助洗车店

自助洗车为什么可以做到24小时营业

共享电单车厂家

自助洗车机 自助洗车加盟 24小时自助洗车

揭秘支撑百度搜索、Feed、小程序三大业务的MVVM框架设计思想,San 核心人员倾力打造

图灵教育

前端开发 好书推荐 框架设计

数据库主键一定要自增吗?有哪些场景不建议自增?

CRMEB

Docker入坑篇

青柚1943

Docker DevOps 云原生 容器化

Dubbo3 官方文档贡献者征集令

阿里巴巴云原生

阿里云 开源 云原生 dubbo

去中心化挖矿LP流动性DAPP系统开发案例

开发微hkkf5566

Move Protocol Beta测试版稳定,临时决定奖池规模再扩大

西柚子

自助洗车到底有哪些不一样的地方

共享电单车厂家

自助洗车加盟 24小时自助洗车

自助洗车方便主要体现在哪方面

共享电单车厂家

自助洗车 自助洗车加盟

昇腾科研创新使能计划赋能开发者  华为计算提供三大维度支持

极客天地

Uniswap去中心化交易所系统开发方案

开发微hkkf5566

自助洗车一次费用不到10元你敢信

共享电单车厂家

自助洗车加盟 自助洗车费用

在线文档协作:办公必备高效率神器

小炮

有哪些好用的工作汇报工具

优秀

低代码 工具软件

深入剖析 HIVE 的锁和事务机制

明哥的IT随笔

大数据 hive 数据仓库

为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)

阿里巴巴云原生

阿里云 Serverless 云原生 开源项目

启动!阿里巴巴编程之夏2022

阿里巴巴云原生

阿里云 云原生 编程之夏

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