写点什么

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

评论

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

艺术品NFT系统的运营

北京木奇移动技术有限公司

区块链技术 软件外包公司 音乐NFT

恒普达:科技赋能公共安全,智领数字时代新未来

极客天地

低代码时代,让“双手”再解放一点

秃头小帅oi

如何实现RAG与MCP集成

电子尖叫食人鱼

rag

全国首发!数造科技发布大数据产品,助力广州政务服务与营商环境升级

数造万象

人工智能 数据资产 科技 政务 热点

Redis主从复制详解

不在线第一只蜗牛

redis

通义灵码 AI IDE 正式上线,智能体自动写代码,首创自动记忆,工程感知全面升级

阿里巴巴云原生

AI 通义灵码

AI 不再是 PPT:它在帮企业做发电预测、运维预警和用电规划

TDengine

数据库 tdengine 物联网 时序数据库

AI技术实现英语口语陪练APP

北京木奇移动技术有限公司

软件外包公司 APP外包公司 AI英语学习

功能齐全Mac用户必备的FTP客户端Transmit 5中文版

Rose

音乐可视化编程 Cycling '74 Max for mac 9.0.7(含 RNBO)

Rose

HarmonyOS Next 弹窗系列教程(1)

万少

鸿蒙 HarmonyOS

2025年测试人必看:AI+Playwright让自动化测试效率飙升200%?

测试人

人工智能 软件测试

NITF 2025 聚焦核电数智化,时序数据库 TDengine 分享亿级数据处理方案

TDengine

tdengine 时序数据库 数据库·

超实用!Dify快速接入本地MCP服务

王磊

零基础也能转型!MES系统助力中小企业数字化转型

万界星空科技

数字化转型 数字化 制造业 mes 万界星空科技mes

游戏公司如何同时管好上百个游戏项目?

禅道项目管理

项目管理 游戏开发 看板 项目管理软件 游戏行业

Vantage荣膺"最佳赛车运动赞助商"殊荣 携手Scuderia Ferrari HP共创辉煌

财见

艺术品NFT的开发框架

北京木奇移动技术有限公司

区块链技术 软件外包公司 音乐NFT

产品叫好又叫座的关键:管理者别再困在「研发工程师依赖症」里

IPD产品研发管理

产品 产品经理 产品设计 产品架构

CST软件对粒子枪仿真和Track Solver追踪求解

思茂信息

cst电磁仿真 CST软件 CST Studio Suite

人工智能产品测试 | 特征的概念:离散与连续

测试人

人工智能

Sketch 2025.1详细新功能介绍

Rose

七牛云存储基于时间戳防盗链的算法JAVA实现

Chris Zhang

Java 七牛云存储 安全 防盗链

LlamaFactory × 多模态RAG × Chat-BI,万字长文揭秘RAG进化迷踪,打造专业AI助手!

商汤万象开发者

AI 大模型 LLM

Studio 3T 2025.10 发布,社区版重磅回归

sysin

mongodb

【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit(5)

HarmonyOS SDK

harmoyos

库存搞不好,利润掉一截!别让库存吃掉你的利润!

积木链小链

数字化转型 智能制造 库存管理

Spring AI 结合DeepSeek使用教程

知识浅谈

存得快查得准,但就是算不动?试试时序数据库 TDengine × Spark 的组合拳

TDengine

数据库 tdengine 物联网 时序数据库

VMmark 4.0.3 - 虚拟化平台基准测试

sysin

VMmark

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