写点什么

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

评论

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

HDC2023 大会全部资料

菜根老谭

华为 鸿蒙 华为开发者大会

Permute 3 for mac(全能媒体格式转换器)v3.11.9中文版

Rose

Parallels Desktop 19 for Mac(PD19虚拟机)无需关闭sipv19.1.0一键激活版

Rose

昆仑万维23年收入49亿净利润13亿,研发费用增长40%,坚定All in AGI与AIGC

新消费日报

查看游戏服务器IP地址的五种绝招,让你游戏无往不利

一只扑棱蛾子

游戏服务器

Databend 数据汇聚平台的建设与挑战

Databend

借助淘宝评论 API,商家轻松掌握市场动态与商机

tbapi

淘宝商品评论接口 淘宝评论API接口

PopChar for Mac 特殊字符输入工具

Rose

TikTok内容下载工具4K Tokkit Pro for Mac

Rose

Modern CSV for Mac(CSV编辑器/查看器)v2.0.7激活版

Rose

JetBrains Rider for mac(跨平台.NET IDE集成开发)v2023.3.5激活版

Rose

12 个监控指标确保 API 策略成功

NGINX开源社区

nginx cpu HTTP API KPI

GreatSQL统计信息相关知识点

GreatSQL

抢先看!美团、京东、360等大厂面试题解析,技术面试必备。

王中阳Go

Go 面试 面试题 面经 大厂

Downie 4 for Mac(视频下载工具)兼容14系统v4.7.11中文版

Rose

CQ 社区版 2.11.1|新增主体授权、操作向导等

BinTools图尔兹

oceanbase 数据库管控 gbase8a 最小权限管理

捷途山海T2上市盛典来袭,动力强空间大,起售价17.99万元

Geek_2d6073

BetterMouse for Mac:流畅的鼠标滚动、光标速度控制

Rose

文件管理器和速度极快的 FTP 客户端:ForkLift

Rose

Photoshop 2024 for mac(ps 2024)v25.7.0中文激活版

Rose

世界读书日|看看阿里内部的技术大牛们推荐了什么书?

阿里技术

读书 分享 书单 世界读书日 好书

多种方法实现Appium屏幕滑动:让用户仿真动作更简单

霍格沃兹测试开发学社

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