2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

评论

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

鸿蒙开发:金融记账应用ArkUI实践

chengxujianke

Mobupps荣膺Great Place to Work®认证

财见

奥特斯在充满挑战的市场环境中实现营收增长

财见

鸿蒙开发:人才招聘类应用的ArkUI实践

chengxujianke

鸿蒙开发:ArkUI实现语音笔记应用布局

chengxujianke

鸿蒙开发:ArkUI实现旅游类机酒预订界面

chengxujianke

鸿蒙开发:健康保险类应用的ArkUI实践

chengxujianke

鸿蒙开发:英语词汇学习应用的ArkUI开发实践

chengxujianke

鸿蒙开发:ArkUI实现室内家居类应用界面设计

chengxujianke

鸿蒙开发:ArkUI实现简易文件浏览器

chengxujianke

Google推出XR眼镜,DePIN 将驱动下一代空间计算

PowerVerse

技术 去中心化 算力 web3 DePIN

鸿蒙开发:ArkUI在园林设计类应用中的实践

chengxujianke

鸿蒙开发:拼团电商应用ArkUI实践

chengxujianke

委外管理真能救企业?成本降低效率提升才是关键!

积木链小链

数字化 智能制造 委外管理

2025中国企业出海:技术如何成为增长引擎

Speedoooo

小程序容器 小游戏引擎 小程序技术 小游戏技术

最新调查显示,尽管存在知识差距,但市场营销领导者认为通用顶级域 (gTLD) 潜力巨大

财见

鸿蒙开发:ArkUI实现远程会议应用界面

chengxujianke

鸿蒙开发:ArkUI实现相机滤镜组件的实践

chengxujianke

阿里云基础网络技术5篇论文入选全球网络顶会NSDI

阿里技术

阿里云 论文

怎么用DeepSeek一键生成思维导图?DS最新使用技巧分享!

职场工具箱

AI 办公软件 AIGC DeepSeek AI生成思维导图

EMQX Cloud、TDengine Cloud 实现数据互通!联手打造端到端云上大数据解决方案

EMQ映云科技

IBM 研究:CEO们在应对企业挑战的同时加码AI投入

财见

鸿蒙开发:闲置交换应用ArkUI实践

chengxujianke

App Builder技术选型指南:从AI编程到小程序容器,外卖App开发实战

Speedoooo

APP开发 小程序容器 小程序技术 小程序容器技术 AI编程

鸿蒙开发:ArkUI实现美颜自拍功能

chengxujianke

鸿蒙开发:旅游攻略应用的ArkUI实践

chengxujianke

鸿蒙开发:健康管理应用中的ArkUI实践

chengxujianke

鸿蒙开发:ArkUI实现体重记录应用

chengxujianke

鸿蒙开发:假期日历应用实践

chengxujianke

鸿蒙开发:课程表应用开发实践

chengxujianke

鸿蒙开发:基于ArkUI的闹钟应用实现

chengxujianke

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